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