0

私の ER モデルには、多対多の関係で関連付けられた 2 つのクラス (ユーザーとルーチン) がありますが、それを GvNIX コードに変換する方法がわかりません。多対多カーディナリティを指定する各クラスで set 属性を使用する必要がありますか? 例えば:

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
4

1 に答える 1

2

多対多の関係を両方向にマップするには、一方の方向を所有者として定義し、他方の方向を --mappedBy 属性を使用してマッピングを定義する必要があります。

従業員とプロジェクトの典型的な例を挙げると、1 人の従業員が多くのプロジェクトに参加でき、1 つのプロジェクトに多くの従業員を含めることができます。このような双方向の多対多の関係を作成するには、フィールド セット コマンドを使用します。

エンティティを作成します。

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 が使用されていない場合、持続性プロバイダーは 2 つの独立した関係があると想定し、結合テーブルに重複した行が挿入されることになります。概念的な双方向の関係があり、データベースに 2 つの異なる結合テーブルがある場合は、2 つの独立したテーブルを維持する必要があるため、--mappedBy を使用しないでください。

最後に、生成されたコードをカスタマイズするには、JPA フォース Luke を使用します 。http://en.wikibooks.org/wiki/Java_Persistence/ManyToManyをご覧ください。

于 2015-05-06T09:44:23.810 に答える