首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从JPA/EJB3持久性上下文中分离实体

从JPA/EJB3持久性上下文中分离实体
EN

Stack Overflow用户
提问于 2008-08-28 00:53:22
回答 12查看 76.2K关注 0票数 59

分离通过EntityManager获取的特定JPA实体Bean的最简单方法是什么?或者,我可以让一个查询在第一个地方返回分离的对象,以便它们本质上是“只读”的吗?

之所以要这样做,是因为我想修改bean中的数据--只在我的应用程序中使用,而不是将其持久化到数据库中。在我的程序中,我最终必须在EntityManager上调用flush(),它将持久化从附加实体到底层数据库的所有更改,但是我想排除特定的对象。

EN

回答 12

Stack Overflow用户

发布于 2012-08-27 18:04:23

无论您使用哪种JPA实现,只要使用entityManager.detach(object)就可以了,它现在是JPA2.0的一部分,也是JEE6的一部分。

票数 29
EN

Stack Overflow用户

发布于 2010-01-12 22:10:22

如果您需要从EntityManager分离一个对象,并且您正在使用Hibernate作为底层ORM层,那么您可以访问Hibernate Session对象,并使用Mauricio Kanada上面提到的Session.evict(Object)方法。

代码语言:javascript
复制
public void detach(Object entity) {
    org.hibernate.Session session = (Session) entityManager.getDelegate();
    session.evict(entity);
}

当然,如果您切换到另一个ORM提供程序,这将会中断,但我认为这最好是尝试进行深度复制。

票数 19
EN

Stack Overflow用户

发布于 2011-03-31 21:16:31

如果使用EclipseLink,您还可以选择

使用查询提示eclipselink.maintain-cache"="false -所有返回的对象都将被分离。

使用EclipseLink JpaEntityManager copy() API将对象复制到所需的深度。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档