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

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

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

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

当用于加载该对象的EntityManager为close() , clear()或detach()时,托管对象将分离。 分离的对象不再被管理,您应该合并以让EntityManager获取更改。

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

如果您当前在事务中,它们将被管理,但如果您不是(例如,如果您使用TransactionAttributeType.NOT_SUPPORTED或TransactionAttributeType.NEVER注释了您的trnasction),则不会管理您的实体。