我相信这是一种常见的情况。假设我在休眠中有一个一对多映射:Category
有很多Items
类别:
@OneToMany(
cascade = {CascadeType.ALL},fetch = FetchType.LAZY)
@JoinColumn(name="category_id")
@Cascade(
value = org.hibernate.annotations.CascadeType.DELETE_ORPHAN
)
private List<Item> items;
物品:
@ManyToOne(targetEntity=Category.class,fetch=FetchType.EAGER)
@JoinColumn(name="category_id",insertable=false,updatable=false)
private Category category;
一切正常。我Category
用来完全控制Item
的生命周期。但是,当我编写代码更新时Category
,首先我Category
从数据库中出来。然后将其传递给 UI。用户填写更改后的值Category
并传回。问题来了:因为我只传递Category
信息,而不是传递Items
,所以Items
集合将是空的。当我打电话时saveOrUpdate
,它会清除所有关联。
关于什么是最好的解决这个问题的任何建议?我认为控制的好处是可以轻松地Category
控制顺序而不是直接混淆。Items
Items
但是,您确实只想更新Category
自己的情况呢?先加载并合并?