Hibernate коллекции в коллекциях - PullRequest
2 голосов
/ 07 августа 2010

У меня есть объект Hibernate с именем Menu, который имеет коллекцию групп, каждая группа в свою очередь имеет коллекцию MenuItems.Так, например, меню может быть для ресторана, группы могут быть Обед и Ужин, а элементы меню в них могут быть Паста, Бургер, Салат.

Проблема, с которой я столкнулся, заключается в том, что, как только я создал меню и сохранил его (что работает нормально), когда я пытаюсь вернуть меню, я получаю больше групп, чем было изначально создано.Итак, если взять приведенный выше пример, если я положу бургер и салат в группу «Ужин» и пасту в обед, мне вернется меню с ТРИ (а не с ДВУМ) группами: 2 группы «Ужин» (каждая с элементами, которые я вставил) и 1 группа «Обед»,Я в основном возвращаюсь в виде групп майни по количеству пунктов меню, которые я вставил в каждую группу.Так что, если я вставил 4 элемента, 4 группы возвращаются.Кто-нибудь знает, почему это может быть?

Отношения: меню к группе = один ко многим, группа к элементам меню = многие ко многим

Группы не используются повторно.Они будут уникальными для одного меню.Но 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;
}

1 Ответ

0 голосов
/ 05 апреля 2011

Извините не могу комментировать атм, поэтому должен быть ответ. Просьба указать, как вы извлекаете свои данные + в файлах сопоставления Java, которые вы можете использовать типы enum! указать обед / ужин и получить отношения. Но, пожалуйста, дайте больше информации о том, как вы извлекаете ваши данные, а также файл сопоставления!

...