簡體   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