【发布时间】:2020-09-25 13:48:12
【问题描述】:
我有一个实体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 列表,但这不起作用:
post request: Pack with menuItems (image)
我尝试将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 中插入行却没有运气;
请问有什么帮助吗?
【问题讨论】:
标签: postgresql spring-boot spring-data-jpa spring-rest