当我有一个我调用.getResultList()的JPA查询时,它会返回一个对象列表。是否管理或分离了该列表中的对象?也就是说,如果我对它们进行更改,或者这些更改是否会被自动拾取,我是否需要担心合并或持久化它们?
答案 0 :(得分:13)
是的,从.getResultList()
返回的对象是受管理的。
当您对托管对象进行更改时,您不必担心合并,因为EntityManager
将自动选择这些更改。
当用于加载该对象的EntityManager
为close(),clear()或detach()时,托管对象将分离。分离的对象不再被管理,你应该合并让EntityManager
接受更改。
答案 1 :(得分:3)
如果您当前在交易中,他们将被管理,但如果您没有(例如,如果您使用TransactionAttributeType.NOT_SUPPORTED或TransactionAttributeType.NEVER注释了您的tr),则不会管理您的实体。
答案 2 :(得分:2)
根据我的经验,getResultList()返回值是Attached。也就是说,如果您在同一事务中对它们进行修改,则不必手动保留它们。