jpa 如何从@Transactional方法中驱逐实体以防止其持久化?

bybem2ql  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(132)

我有一个必须更新特定实体A的事务,问题是在同一个事务中,为了获得更新该实体A所需的数据,它需要链接到数据库的另一个实体(实体B)。
这是可以的,但问题是它不只是接受它,它更新实体B,所以在事务结束时,它更新实体A和实体B,而它应该只更新实体A。
这段代码很旧,实体B很大,为了创建一个POJO或类似的东西,以避免直接编辑实体B。
我一直在研究,我发现session.evict(instanceOfEntityB),但问题是,这似乎不工作,因为它是更新这个实体(检查数据库中的版本,它改变.)。所以我想知道是否有另一种方法可以阻止实体B继续存在。

qxgroojn

qxgroojn1#

可以使用entityManager.detach(yourEntity)
从持久性上下文中删除给定实体,导致托管实体变为分离的。对实体所做的未刷新更改(如果有)(包括删除实体)将不会同步到数据库。先前引用分离实体的实体将继续引用它。

相关问题