【发布时间】:2015-09-16 10:19:05
【问题描述】:
我需要知道是否有一种方法可以在当前休眠会话中合并分离的实体,而无需从数据库中重新加载实体。
这里是场景:
我有一个表 CodeItem 如下所示
CodeItem
-------------------
Code | varchar
CodeType | varchar
Label | varchar
pk 是由(Code, CodeType) 列组成的复合键,并且没有标识列。
DB 是 SQLServer 2012,ORM 是 hibernate 4。
已实现 Hibernate L2 缓存,它对除 CodeItem 实体之外的所有实体都运行良好。
CodeItem 实体在第一次被访问时被缓存,但当访问同一实体时,它不是从缓存中检索,而是从数据库中检索,因为身份列不存在。
对于某些限制,我无法更改表定义。 为了克服性能问题,我实现了 spring 缓存机制,效果很好。
问题是,当我从 Spring 缓存区域检索 CodeItem 实体时,我需要将它合并到休眠会话中,因为它是一个分离的实体。
为此,我使用session.merge,它将从数据库重新加载实体。
有什么方法可以在不进行数据库查询的情况下将分离的 CodeItem 实体合并到休眠会话?
我希望有这样的界面
session.merge(entity, reloadFromDBFlag) //where reloadFromDBFlag is boolean
【问题讨论】:
标签: hibernate