hibernate,事务

之前做项目的时候遇到的问题。现在记录下来。

有一个实体对象JC(其中有些字段的值为空),已经封装好了,然后调用hibernate的update方法方法保存进数据库中的表LOWERTABLE(降舱表)

调用update方法之后,还会走接下来的流程:当符合某种条件的时候,会开启线程,将值A更新到LOWERTABLE中的字段P。

这是基本流程,但是问题来了。本来我想程序走完之后理想情况下,LOWERTABLE中的字段P对应的值应该是A,但实际最终我得到的结果

是空,而不是A。这是什么原因呢,老大给出了答案。

封装好的JC实体对象中P的值是空的,hibernate的update方法在进行LOWERTABLE相关数据的跟新是有时间间隔的,当我还没跟新完的时候,线程里面的流程已经走完,这个时候LOWERTABLE中P对应的是A,好,等到我update完的时候,又将A更新为空,所以没有达到自己想要的结果。这其中涉及到hibernate的session,事务什么的,还不太懂,解决方法就是走线程里面的流程的时候,加锁,并且休眠。保证update走完之后再走线程里面的流程。

先记录在这里,之后把这个完善。

另外可以自己在本地测试一下。参考老的代码和自己的代码的区别。之后再做记录

猜你喜欢

转载自blog.csdn.net/rookie_s/article/details/54973443