繁体   English   中英

集合中的休眠集合

[英]Hibernate collections within collections

我有一个名为Menu的Hibernate实体,它具有一个Groups的集合,每个组又具有一个MenuItems的集合。 例如,菜单可以用于餐厅,组可以是午餐和晚餐,菜单项可以是面食,汉堡,沙拉。

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

关系是:菜单到组=一对多,组到MenuItems =多对多

组不被重用。 它们对于一个菜单是唯一的。 但是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映射文件中可以使用枚举类型! 指定午餐/晚餐,并获取关系。 但是请提供有关如何检索数据以及映射文件的更多信息!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM