关于Hibernate中SessionImpl.isDirty()在OPTIMISTIC_FORCE_INCREMENT锁定场景下返回false的疑问
关于Hibernate中SessionImpl.isDirty()在OPTIMISTIC_FORCE_INCREMENT锁定场景下返回false的疑问
嘿各位,最近在使用Hibernate的时候遇到了一个困惑的问题,想跟大家探讨下:
当实体被标记为OPTIMISTIC_FORCE_INCREMENT时,按照预期不管实体本身有没有发生变更,它的Version字段都应该被强制递增。但实际操作中,当我调用SessionImpl.isDirty()方法时,它却返回了false。这就带来一个问题——如果用户是通过手动检查会话状态来决定是否执行flush()的话,很可能会跳过这个操作,结果就导致版本升级的信息被丢弃了。
想请教下有没有Hibernate的开发者或者熟悉这块机制的朋友,为什么调用entityManager.lock(object, OPTIMISTIC_FORCE_INCREMENT)之后,会话没有被标记为脏状态呢?
感谢各位的解答!
内容来源于stack exchange
相关产品推荐
相关产品推荐

