我有一个实体Pack
,它应该包含MenuItem
实体对象的List
,并且每个MenuItem
对象应该可持久化为多个Pack
。
编辑
我在Pack
实体中使用了@ManyToMany
注释:
public class Pack {
...
@ManyToMany(mappedBy = "packs")
private List<MenuItem> menuItems;
}
在MenuItem
实体中:
public class MenuItem{
...
@ManyToMany
@JoinTable(
name = "pack_menu_items",
joinColumns = { @JoinColumn(name = "menu_item_id") },
inverseJoinColumns = { @JoinColumn(name = "pack_id") }
)
private List<Pack> packs;
}
通过这种方式,在Postgres数据库中生成了一个名为pack_menu_items
的表。
现在我尝试创建一个新的Pack
对象,并同时影响它一个MenuItem
列表,但没有成功:张贴请求:包装与菜单项目(图像(
我尝试将menuItems
单独添加到Pack
中:
@Override
public Pack addItems(int id, List<MenuItem> menuItems) {
Pack pack = get(id);
assert pack != null;
List<MenuItem> menuItemsWillUpdate = pack.getMenuItems();
menuItemsWillUpdate.addAll(menuItems);
pack.setMenuItems(menuItemsWillUpdate);
return repository.save(pack);
}
但在将行插入到新的表pack_menu_items
中却没有运气;
有什么帮助吗?
如果一个Pack
可以包含多个MenuItem
,而一个MenuItem
可以属于多个Pack
,这实际上不是OneToMany
,而是ManyToMany
关系。
有一个不同的注释,@ManyToMany
。要了解更多关于这方面的信息,我建议遵循本教程中的主题。