2014-10-06 1 views
0

мне нужно создать М к N отображению, с разъяснением, для этого таблиц:M до N отображения с Hibernate с дополнительными столбцами, используя эту заметку

Table Food : Columns: id, description, size, type 
Table Ingredients: Columns: id, description, price 
Table Food_Ingredients: Columns: food_id (FK), ingredient_id (FK), quantity 

Классов:

class Food { 

    /*mapped fields setter/getters*/ 

    @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.DETACH) 
    @JoinTable(name = "food_ingredient", 
       joinColumns = { @JoinColumn(name = "food_id", nullable = false) }, 
       inverseJoinColumns = { @JoinColumn(name = "ingredient_id", nullable = false) }) 
    private List<Ingredient> ingredients; 

} 

class Ingredients {/*mapped fields setter/getters*/} 

Итак, как могу ли я отобразить эти объекты?

ответ

2

Как вы собираетесь представлять количество в вашей модели? Вы должны создать новый объект для FoodIngredients с этим свойством (и ссылки на обе другие таблицы) и сопоставить его с помощью аннотаций @OneToMany в Food and Ingredients.

Edit: Вы можете использовать http://www.mkyong.com/hibernate/hibernate-many-to-many-example-join-table-extra-column-annotation/ для справки

+0

Это лучший способ? – AndreDuarte

+0

Это единственный способ, о котором я знаю. Food_Ingredients не является таблицей соединений, так как содержит дополнительные данные в дополнение к внешним ключам. Вам нужно как-то передавать информацию о количестве, чтобы вам нужно было создать новый объект. –

+0

Это сработало. Я попытаюсь улучшить решение, чтобы получить простые классы, но вы решили работать хорошо. Большое спасибо. – AndreDuarte

Смежные вопросы