为@OneToMany实体多次持久化现有实体(重复键)



我有一个实体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。要了解更多关于这方面的信息,我建议遵循本教程中的主题。

相关内容

  • 没有找到相关文章

最新更新