2015-05-04 23 views
0

在我的E-R模型中,我有兩個類(User和Routine)通過多對多關係相關,但我不知道如何將它轉換爲GvNIX代碼。 我應該在每個類中使用set屬性來指定多對多的基數嗎? 例如:GvNIX中的多對多關係

field set --fieldName routines --class ~.objects.User --type ~.objects.Routine --cardinality MANY_TO_MANY 
field set --fieldName users --class ~.objects.Routine --type ~.objects.User --cardinality MANY_TO_MANY 

回答

2

要映射在兩個方向上多對多的關係,一個方向必須被定義爲擁有者和其他必須使用--mappedBy屬性來定義它的映射。

以典型的員工項目爲例,一個員工可以參與多個項目,一個項目可以擁有多個員工。要創建這樣的雙向許多一對多關係使用的字段設置命令:

創建實體:

entity jpa --class ~.domain.Project 
entity jpa --class ~.domain.Employee 

創建關係的所有者:

field set --class ~.domain.Employee --fieldName projects --type ~.domain.Project 

然後創建的關係的另一面:

field set --class ~.domain.Project --fieldName employees --type ~.domain.Employee --mappedBy projects 

如果--mappedBy沒有被使用,所述n持久性提供者將假設有兩個獨立的關係,並且最終會將重複行插入到連接表中。如果你有一個概念上的雙向關係,但是在數據庫中有兩個不同的連接表,那麼你不能使用--mappedBy,因爲你需要維護兩個獨立的表。

最後,要定製生成的代碼只需使用JPA force Luke,看看http://en.wikibooks.org/wiki/Java_Persistence/ManyToMany