JPA /如何以只读模式获取实体?

时间:2011-03-16 07:32:12

标签: java jpa

我正面临一个问题,我需要在只读模式下检索一个实体两次以比较它们(需要从db指向同一个实体的分离对象,并且在比较之前我对它们进行一些操作) 。 由于我的JPA和Hibernate不支持EntityManager中的detach(),并且我无法将其更改为更新的版本,是否有任何解决方法,以便我可以获取这两个?

提前感谢您的帮助,

P上。

3 个答案:

答案 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上。