我使用无状态事务服务(意思是,我为每个调用打开一个新会话和事务),如下所示:
@Transactional
void someService(Object o) {
Object newO = entityManager.merge(o);
newO.getChildren().add(something);
}
我传递给服务的 Object o 是一个detached object。问题merge(object)
是,它返回一个新的实例来操作,而不是使参数本身持久化。因此,我对持久对象所做的任何更改都不会发生在内存中的原始对象上。
我当然可以重新连接我所有的本地参考,但我希望有更好的解决方案。
有没有办法让我的本地实例管理,而不是获取一个新实例?
我试过了refresh(object)
,update(object)
但我确实遇到了异常,因为对象的关联仍然是分离的。
当我用它注释关联时,@Cascade(value=CascadeType.save-update)
它工作正常,但是当我有很多 OneToMany 或 ManyToMany 关联时,这不会导致性能问题吗?