我成功地为Dao类使用了这个注释.并且回滚适用于测试.
但现在我需要回滚实际代码,而不仅仅是测试.在测试中使用特殊注释.但是哪些注释适用于非测试代码?这对我来说是个大问题.我已经花了一天时间.官方文件不符合我的需要.
class MyClass { // this does not make rollback! And record appears in DB.
EmployeeDaoInterface employeeDao;
public MyClass() {
ApplicationContext context = new ClassPathXmlApplicationContext(
new String[] { "HibernateDaoBeans.xml" });
employeeDao = (IEmployeeDao) context.getBean("employeeDao");
}
@Transactional(rollbackFor={Exception.class})
public void doInsert( Employee newEmp ) throws Exception {
employeeDao.insertEmployee(newEmp);
throw new RuntimeException();
}
}
Run Code Online (Sandbox Code Playgroud)
employeeDao是
@Transactional
public class EmployeeDao implements IEmployeeDao {
private SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public void insertEmployee(Employee emp) {
sessionFactory.getCurrentSession().save(emp);
}
} …Run Code Online (Sandbox Code Playgroud) 我用这种方式编译代码:
g++ main.cpp -I sqlite3
Run Code Online (Sandbox Code Playgroud)
其中sqlite3是我从sqlite-amalgamation-3071100.zip收到的源文件的文件夹,-I是包含源的标志.
该存档包含:shell.c,sqlite3.c,sqlite3.h,sqlite3ext.h.
这是我收到的:
undefined reference to `sqlite3_open'
Run Code Online (Sandbox Code Playgroud)
该程序只包含#include和函数调用sqlite3_open(...);
如果我制作"sudo apt-get install libsqlite3-dev"并使用命令编译程序,我可以编译好
g++ main.cpp -lsqlite3
但我想解决这个问题,因为我不想在另一台计算机上安装一些库,我无法访问它!
当我将程序与CUDA并行时,我还没有达到阶段,但我使用C++而不是C而且我担心如果我的程序不能用CUDA编译!
有人可以找到这笔交易的证据.