将实体与 JPA/EJB3 持久性上下文分离
分离通过 EntityManager 获取的特定 JPA 实体 Bean 的最简单方法是什么。或者,我是否可以首先让查询返回分离的对象,以便它们基本上充当“只读”?
我想这样做的原因是因为我想修改Bean中的数据 - 仅在我的应用程序中,但从未将其持久保存到数据库中。在我的程序中,我最终必须在EntityManager上调用 flush(),这将保留从附加实体到下层数据库的所有更改,但我想排除特定对象。
分离通过 EntityManager 获取的特定 JPA 实体 Bean 的最简单方法是什么。或者,我是否可以首先让查询返回分离的对象,以便它们基本上充当“只读”?
我想这样做的原因是因为我想修改Bean中的数据 - 仅在我的应用程序中,但从未将其持久保存到数据库中。在我的程序中,我最终必须在EntityManager上调用 flush(),这将保留从附加实体到下层数据库的所有更改,但我想排除特定对象。
(可能来不及回答,但对其他人可能有用)
我现在正在用JPA开发我的第一个系统。不幸的是,当这个系统几乎完成时,我遇到了这个问题。
简单地说。使用休眠,或等待 JPA 2.0。
在休眠中,您可以使用'session.evict(object)'从会话中删除一个对象。在 JPA 2.0 中,在现在的草稿中,有一个 'EntityManager.detach(object)' 方法可以将一个对象从持久性上下文中分离出来。
无论您使用哪种 JPA 实现,现在只需在 JPA 2.0 和 JEE6 中使用它即可。entityManager.detach(object)