2014-10-06 75 views
0

我需要創建一個M到N映射額外列,與anotations休眠,此表:M到N的映射與使用anotation

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註解在食品和配料中對其進行映射。

編輯:您可以使用http://www.mkyong.com/hibernate/hibernate-many-to-many-example-join-table-extra-column-annotation/作爲參考

+0

這是最好的方式? – AndreDuarte 2014-10-06 14:28:16

+0

這是我知道的唯一方法。 Food_Ingredients不是聯結表,因爲它包含一些額外的外鍵數據。您需要以某種方式傳達有關數量的信息,因此您需要一個新的實體來完成此操作。 – 2014-10-06 14:42:20

+0

它工作。我將嘗試增強解決方案以獲得簡單的類,但是您的解決方案運行良好。非常感謝。 – AndreDuarte 2014-10-06 19:06:21