当我使用A JPA Query的getResultList()时,结果是分离还是管理?

时间:2012-02-05 23:14:33

标签: java jpa eclipselink

当我有一个我调用.getResultList()的JPA查询时,它会返回一个对象列表。是否管理或分离了该列表中的对象?也就是说,如果我对它们进行更改,或者这些更改是否会被自动拾取,我是否需要担心合并或持久化它们?

3 个答案:

答案 0 :(得分:13)

是的,从.getResultList()返回的对象是受管理的。

当您对托管对象进行更改时,您不必担心合并,因为EntityManager将自动选择这些更改。

当用于加载该对象的EntityManagerclose()clear()detach()时,托管对象将分离。分离的对象不再被管理,你应该合并让EntityManager接受更改。

答案 1 :(得分:3)

如果您当前在交易中,他们将被管理,但如果您没有(例如,如果您使用TransactionAttributeType.NOT_SUPPORTED或TransactionAttributeType.NEVER注释了您的tr),则不会管理您的实体。

答案 2 :(得分:2)

根据我的经验,getResultList()返回值是Attached。也就是说,如果您在同一事务中对它们进行修改,则不必手动保留它们。