hibernate中的多步骤事务
我在hibernate中使用多步骤转换时遇到了一些问题。这就是我正在做的 我的道法之一hibernate中的多步骤事务,hibernate,transactions,Hibernate,Transactions,我在hibernate中使用多步骤转换时遇到了一些问题。这就是我正在做的 我的道法之一 在表a中创建新记录并检索Oracle生成的主键 使用步骤1中检索到的主键更新表B中的一行 代码如下所示: @Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW) public Object myDAOMethos(...){ .... getHibernateTemplate().execute( new
@Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
public Object myDAOMethos(...){
....
getHibernateTemplate().execute(
new HibernateCallback<Long>() {
public Long doInHibernate(Session session)
throws HibernateException, SQLException {
// Create a new record in table A
session.save(objA);
final long pKey = objA.getId();
// Update the row in table B
org.hibernate.Query query = session
.getNamedQuery("updateBQuery").setLong("idB",pKey...
query.executeUpdate();
}
}
return true;
}
});
}
@Transactional(readOnly=false,propagation=propagation.REQUIRES\u NEW)
公共对象MyDaoMethodos(…){
....
getHibernateTemplate().execute(
新的HibernateCallback(){
公共长形多因希伯内特(会议)
抛出HibernateeException、SQLException{
//在表a中创建新记录
session.save(objA);
final long pKey=objA.getId();
//更新表B中的行
org.hibernate.Query=会话
.getNamedQuery(“updateBQuery”).setLong(“idB”,pKey。。。
query.executeUpdate();
}
}
返回true;
}
});
}
该方法被绑定在一个事务下
我的问题:
当我在tomcat上运行此代码时,一切正常。但是当我尝试为此执行junit测试用例时,表B上的更新从未发生。尽管我可以在控制台输出上看到更新SQL(hibernate.show_SQL=true)。也没有例外!只发生了插入,就这样
不知道这里发生了什么!有什么想法吗
问候,,
-有些事情可能是错的
Spring提供了一些基本测试类,可以为您管理事务和回滚数据……谢谢您的回复。您说得对 当你发布这个答案时,我意识到问题出在哪里,并尝试了一下,成功了 这是您文章中的第2点。基本上,junit测试用例本身使用“AbstractTransactionalJUnit4SpringContextTests”并在测试后通过@rollback管理DB提交/回滚。因此,基本上,我试图更新的数据并没有首先创建。我仍然感到惊讶的是,我在控制台上没有看到任何错误 我接受你的正确答案。非常感谢
-J此外,关于第1点,“外键”由于某些限制实际上没有设置为外键。