我拥有的内容:
我需要更新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);
}
}
答案 0 :(得分:4)
我认为CascadeType.ALL
是问题
您可以使用
cascade = {CascadeType.PERSIST, CascadeType.REFRESH, CascadeType.DELETE})
您还可以向此集添加您需要的任何其他级联选项。