2
我有一個名爲Menu的Hibernate實體,它具有一組組的集合,每個組又有一個MenuItems的集合。舉例來說,菜單可以是餐館,團體可以是午餐和晚餐,其中的菜單項可以是麪食,漢堡,沙拉。集合中的Hibernate集合
我遇到的問題是,一旦我創建菜單並保存它(工作正常),當我嘗試返回菜單時,我得到的數量比最初創建的數量多。因此,以上面的例子來說,如果我在晚餐組和意大利麪午餐中放入漢堡和沙拉,我會返回一個帶有三個(而不是兩個)組的菜單:2個晚餐組(每個都帶有我放入的項目)和1個午餐組。我基本上回歸到每組插入的菜單項的數量。所以如果我插入4個項目,則返回4個組。任何人都知道這可能是爲什麼?
的關係是:菜單組= 1對許多,集團的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;
}
@Hisham你能告訴你如何檢索你保存的菜單嗎? – 2010-08-06 21:16:04
@Arthur:感謝您的評論。我使用Spring,所以我使用HibernateTemplate的方式如下:template.get(Menu.class,menuID); – Hisham 2010-08-06 21:21:26
你是否正確實現了hashCode/equals? – 2010-08-06 21:28:11