将实体与 JPA/EJB3 持久性上下文分离

2022-08-31 16:34:11

分离通过 EntityManager 获取的特定 JPA 实体 Bean 的最简单方法是什么。或者,我是否可以首先让查询返回分离的对象,以便它们基本上充当“只读”?

我想这样做的原因是因为我想修改Bean中的数据 - 仅在我的应用程序中,但从未将其持久保存到数据库中。在我的程序中,我最终必须在EntityManager上调用 flush(),这将保留从附加实体到下层数据库的所有更改,但我想排除特定对象。


答案 1

(可能来不及回答,但对其他人可能有用)

我现在正在用JPA开发我的第一个系统。不幸的是,当这个系统几乎完成时,我遇到了这个问题。

简单地说。使用休眠,或等待 JPA 2.0。

在休眠中,您可以使用'session.evict(object)'从会话中删除一个对象。在 JPA 2.0 中,在现在的草稿中有一个 'EntityManager.detach(object)' 方法可以将一个对象从持久性上下文中分离出来。


答案 2

无论您使用哪种 JPA 实现,现在只需在 JPA 2.0 和 JEE6 中使用它即可。entityManager.detach(object)


推荐