针对SQL本机查询的Hibernate乐观锁定

时间:2015-11-30 15:47:49

标签: java hibernate

hibernate是否支持使用SQL本机查询的显式版本概念进行乐观锁定?

1 个答案:

答案 0 :(得分:0)

是。您可以构造本机SQL查询,从会话中获取SQLQuery实例。使用addEntity告诉hibernate查询返回的实体类型。 Hibernate将正确管理返回的这些实体实例。

您需要注意的另一个方面是缓存。 Hibernate不了解本机查询,因此它不知道正在访问哪些表。这意味着hibernate无法自动刷新缓存以确保查询看到数据库的当前状态。这会导致错误的结果,这可能是微妙的,难以识别。

缓存/刷新问题的修复是告诉SQLQuery实例访问哪些实体类型。使用addSynchronized*方法告诉hibernate查询中发生了什么,而hibernate将完成所有艰苦的工作。