我有一个非常奇怪的行为,在我的java(spring)应用程序中,我有一个案例,我使用hibernateTemplate保存一个对象,然后调用一个线程,尝试使用hibernateTemplate再次获取此对象,如果我正在运行在调试模式下,每个东西都工作正常,但是当不是,它大部分时间都给我空指针异常,因为从线程中的第二个调用返回的对象返回一个空对象,
所以这里的底线是:我认为在线程启动之前,hibernate没有提交它的事务,
所以如何确保在线程启动之前在DB中保存对象
此致
答案 0 :(得分:1)
执行flush()应该可以完成这项任务。
答案 1 :(得分:0)
所以这里的底线是:我认为hibernate在线程启动之前没有提交它的事务
为什么Hibernate会这样做?实际上,Hibernate不提供自动事务处理。
所以如何确保在线程启动之前在DB中保存对象
在开始新的线程#2之前,提交在线程#1中启动的事务。
如果没有关于Spring / Hibernate设置和事务处理的更多细节,将很难得到更详细的IMO答案。