hibernate是否支持使用SQL本机查询的显式版本概念进行乐观锁定?
答案 0 :(得分:0)
是。您可以构造本机SQL查询,从会话中获取SQLQuery
实例。使用addEntity
告诉hibernate查询返回的实体类型。 Hibernate将正确管理返回的这些实体实例。
您需要注意的另一个方面是缓存。 Hibernate不了解本机查询,因此它不知道正在访问哪些表。这意味着hibernate无法自动刷新缓存以确保查询看到数据库的当前状态。这会导致错误的结果,这可能是微妙的,难以识别。
缓存/刷新问题的修复是告诉SQLQuery
实例访问哪些实体类型。使用addSynchronized*
方法告诉hibernate查询中发生了什么,而hibernate将完成所有艰苦的工作。