我有的:
我需要更新我的entity
。我使用的是Hibernatee对话,这意味着我们在会话缓存中已经有entity
了。
public void handle(Request request, Session session) {
MyEntity updatedEntity = request.getEntity();
session.merge(updatedEntity); //rewrite all lazy collections
}
因此,我将对象发送给客户端,客户端将对象装满,然后将其发送回以进行更新。
什么问题:
惰性集合不会发送到客户端。结果,如果惰性集合不为空,则它将在
session.merge(updatedEntity)
字符串中覆盖发生这种情况是因为客户对这些集合中的元素一无所知
题:
两个如何以正确的方式合并
entity
?意味着无需重写懒惰的集合。编辑:(我如何使用我的收藏集)
public class MyEntity {
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true)
@JoinColumn(name = "entity_id")
private List<AnotherEntity> anotherEntities;
public void setAnotherEntities(List<AnotherEntity> anotherEntities) {
// we must work with the same instance of list (again, because of orphanRemoval)
this.anotherEntities.clear();
this.anotherEntities.addAll(anotherEntities);
}
}
最佳答案
我认为CascadeType.ALL
是问题
您可以改用
cascade = {CascadeType.PERSIST, CascadeType.REFRESH, CascadeType.DELETE})
您还可以将所需的任何其他层叠选项添加到此集合中。