noi*_*i.m 1 hibernate cascade associations
我在Item和Category之间有@ManyToMany(双向)关系.
class Item {
@ManyToMany(cascade = CascadeType.ALL)
Collection<Category> categories=new ArrayList<Category>();
}
class Category {
@ManyToMany(mappedBy="categories", cascade = CascadeType.ALL)
Collection<Item> items=new ArrayList<Item>();
}
Run Code Online (Sandbox Code Playgroud)
我在两者上都指定了CascadeType.ALL.物品是物主.将使用第三个表(Item_Category)映射ManyToMany关系
当我创建一个项目并向该项目添加类别并保存该项目时,该项目中的所有类别都会保持不变.此外,还在连接表中生成必要的条目(如预期的那样).
但是,当我创建一个类别并向其添加新项目并保存该类别时,我看到必须在项目和类别表中创建条目,但在Item_Category连接表中没有插入.因此,无法正确创建关联.
这是预期的行为吗?这意味着只有当我们在Item中添加类别时,关联表才会有条目,因为Item是关系的所有者?
你期待魔法,而Hibernate不是那样.保存破碎的对象模型会使事情破裂.如果Item和Category具有双向关系,则必须始终设置关系的两端.仅仅因为你有Hibernate并不意味着你的代码可以是懒惰的.
换句话说,你永远不会编写这样的代码并期望它能够工作,你会(假设一个工作assert关键字)吗?
Category c = new Category();
Item i = new Item();
c.getItems().add(i);
assert i.getCategories().contains(c);
Run Code Online (Sandbox Code Playgroud)
如果没有,为什么在将Hibernate添加到混合中时,您希望它能够正常工作?
| 归档时间: |
|
| 查看次数: |
1354 次 |
| 最近记录: |