分离通过EntityManager获取的特定JPA实体Bean的最简单方法是什么。或者,我是否可以首先使用查询返回分离的对象,以便它们本质上充当“只读”对象?
之所以这样做,是因为我想修改bean中的数据-仅在我的应用程序中使用,但从未将其持久化到数据库中。在我的程序中,我最终不得不在EntityManager上调用flush(),该操作将持久保留从附加实体到底层数据库的所有更改,但是我想排除特定的对象。
不幸的是,在当前的JPA实现AFAIR中,无法从实体管理器断开一个对象的连接。
EntityManager.clear()将断开所有 JPA对象的连接,因此,如果您确实计划保持其他连接,那么在所有情况下这都不是一个合适的解决方案。
因此,最好的选择是克隆对象并将克隆传递给更改对象的代码。由于默认克隆机制以适当的方式处理了原始和不可变的对象字段,因此您无需编写大量的管道代码(除了深克隆可能具有的任何聚合结构之外)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句