gpt4 book ai didi

java - 集合中的 Hibernate 集合

转载 作者:行者123 更新时间:2023-11-29 09:24:49 25 4
gpt4 key购买 nike

我有一个名为 Menu 的 Hibernate 实体,它有一组组,每个组又有一组 MenuItems。例如,菜单可以是餐厅的,组可以是午餐和晚餐,其中的菜单项可以是意大利面、汉堡、沙拉。

我遇到的问题是,一旦我创建了菜单并保存它(工作正常),当我尝试取回菜单时,我得到的组比最初创建的要多。所以以上面的例子为例,如果我把汉堡和沙拉放在晚餐组,把意大利面放在午餐组,我会得到一个包含三个(而不是两个)组的菜单:2 个晚餐组(每个都有我放入的项目)和 1 个午餐组.我基本上得到了与我插入每个组的菜单项数量一样多的组。因此,如果我插入了 4 个项目,则会返回 4 个组。有人知道这是为什么吗?

关系是:Menu to Group = One-to-Many, Group to MenuItems = Many-to-Many

组不会重复使用。它们对于一个菜单是唯一的。但是 MenuItems 可以在许多组中重复使用。

这是我的代码:

class Menu {
@Id @GeneratedValue(strategy = GenerationType.AUTO)
private long menuID;

@OneToMany(fetch=FetchType.EAGER, cascade=CascadeType.ALL)
@JoinColumn(name="menuID")
private List<MenuGroup> groups;
}

class MenuGroup {
@Id @GeneratedValue(strategy = GenerationType.AUTO)
private long groupID;

@Sort (type=SortType.NATURAL)
@ManyToMany(fetch=FetchType.EAGER)
@JoinTable(name="group_menu_item",
joinColumns = { @JoinColumn(name = "groupID") },
inverseJoinColumns = { @JoinColumn(name = "menuItemID") } )
private SortedSet<MenuItem> menuItems;
}

class MenuItem {
@Id @GeneratedValue(strategy = GenerationType.AUTO)
private long menuItemID;
}

最佳答案

抱歉不能评论 atm,所以它必须是一个答案。请在可以使用枚举类型的 Java 映射文件中指定如何检索数据 +!指定午餐/晚餐,并获取关系。但是请提供有关如何检索数据以及映射文件的更多信息!

关于java - 集合中的 Hibernate 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3427767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com