Hibernate 4.2与3.6中OPTIMISTIC_FORCE_INCREMENT的不同行为

时间:2013-07-22 11:04:04

标签: hibernate java-ee

我正在从Hibernate 3.6.10迁移到4.2.3。

如果涉及在实体上使用OPTIMISTIC_FORCE_INCREMENT锁,我会注意到这两个版本之间的行为差​​异。

假设我有一个版本= 0的现有实体。如果我然后执行以下操作:

  1. 通过EntityManager(版本= 0)
  2. 加载实体
  3. 在实体上应用OPTIMISTIC_FORCE_INCREMENT锁
  4. 通过属性的设置器修改实体
  5. 刷新实体管理器。这导致版本增量=>版本= 1
  6. 提交交易。对于3.6.10,版本不递增(版本= 1)。对于版本4.2.3,版本递增(版本= 2)
  7. 由于我使用DTO将对象传回客户端,因此这种4.2.3行为对我来说是个大问题。从实体到dto的转换在刷新和提交之间完成(步骤4和5)。使用4.2.3这将导致客户端看到版本的过时版本,这是非常不受欢迎的。

    我可以做些什么来调整这种行为?如果没有,这会是一个错误吗? (它肯定不向后兼容)。

    我希望如果在flush和commit之间没有对实体进行修改,那么在执行提交时就不会有进一步的数据库更新,或者我错了吗?

    感谢所有帮助! 提前致谢, 亲切的问候, Franck de Bruijn

0 个答案:

没有答案