如何确保hibernate提交了一个事务?

时间:2010-11-04 10:45:19

标签: java hibernate thread-safety

我有一个非常奇怪的行为,在我的java(spring)应用程序中,我有一个案例,我使用hibernateTemplate保存一个对象,然后调用一个线程,尝试使用hibernateTemplate再次获取此对象,如果我正在运行在调试模式下,每个东西都工作正常,但是当不是,它大部分时间都给我空指针异常,因为从线程中的第二个调用返回的对象返回一个空对象,

所以这里的底线是:我认为在线程启动之前,hibernate没有提交它的事务,

所以如何确保在线程启动之前在DB中保存对象

此致

2 个答案:

答案 0 :(得分:1)

执行flush()应该可以完成这项任务。

答案 1 :(得分:0)

  

所以这里的底线是:我认为hibernate在线程启动之前没有提交它的事务

为什么Hibernate会这样做?实际上,Hibernate不提供自动事务处理。

  

所以如何确保在线程启动之前在DB中保存对象

在开始新的线程#2之前,提交在线程#1中启动的事务。

如果没有关于Spring / Hibernate设置和事务处理的更多细节,将很难得到更详细的IMO答案。