我正面临一个问题,我需要在只读模式下检索一个实体两次以比较它们(需要从db指向同一个实体的分离对象,并且在比较之前我对它们进行一些操作) 。 由于我的JPA和Hibernate不支持EntityManager中的detach(),并且我无法将其更改为更新的版本,是否有任何解决方法,以便我可以获取这两个?
提前感谢您的帮助,
P上。
答案 0 :(得分:0)
您可以在获取后将您的实体转移到另一个bean MyUnmanagedEntity
。只需使用未映射为@Entity
的子类,因此不会保留。使用适当的构造函数初始化它,该构造函数接收原始文件并传输您需要的所有字段。
另一种方法是close()
您的EntityManager
,以便停止管理您的实体。但这也会影响所有其他管理实体。
答案 1 :(得分:0)
我认为您可以使用Session
获取基础Hibernate em.getDelegate()
,并在其上调用evict()
。
答案 2 :(得分:0)
我通过一种解决方法,使用Apache Commons库的一个功能,更准确地说是Common BeanUtils(http://commons.apache.org/beanutils/)来实现我的目标。 它包含一种复制实体bean内容的方法,该方法是分离的,并且可以进一步处理而不会影响数据库中的数据。
感谢您的帮助,
此致 P上。