[英]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.