2011-07-18 15 views
0

私は関係がある(奇妙な)関係を構築する必要があります。 たとえば、1つのエンティティAが多くのB OneToMany)JPA複数層の関係

A ----> B 

今、私はCがAとの関係を持つことになります

C--> (A--->B) , not C-->A-->B 

、エンティティCはAとB等との複合関係にOneToOne関係を持つことになり、別の関係をする必要はありませんAはBと同じですが、C→D(A→B)のようになります。

生成された結合テーブルはJPAにプライマリキーを持っていないため、この関係をどのようにマップすることができるか考えています。これは埋め込み不可能であり、永続的であるべきであるので、通常のA→Bも必要であることに注意してください。

ありがとうございました。

例: ロケーションとイベントは私の2つのエンティティで、その上にCleanPlanを関連付ける必要があります。 CleanPlanがLocation-1のイベント-1に関連していることを意味します。ですから、私はイベント-1の場所-1でクリーンプランを持っていると指定しています。それは理にかなっていますか?

enter image description here

+0

私たちに実例を教えてもらえますか?実際の実体を記述する。 –

+0

たとえば、ロケーションとイベントは私の2つのエンティティであり、その上でCleanPlanを関連付ける必要があります。 CleanPlanがLocation-1のイベント-1に関連していることを意味します。ですから、私はイベント-1の場所-1でクリーンプランを持っていると指定しています。それは理にかなっていますか? – Shahriar

答えて

1

私はイベント - ロケーションの基数に応じて、この

enter image description here

またはこれを言うでしょう。

enter image description here

+0

ありがとう、JPAでこれを行う方法はありますか?私はEventLocationという名前のクラスを作るべきですか?もしそうなら、私は10の実体を持っていて、それらの間にこの関係を作りたいと思うと、たくさんのクラスがあるでしょう。 – Shahriar

+0

@Shahriar、あまりにも多くのオブジェクトを意味しましたか?これは、**関連クラス**のようなものです。 –

+0

いいえ、JPAエンティティの観点から考えると、私のイベントエンティティでは@OneToManyとLocationが関連しているので、参照テーブルのイベント位置が作成されますが、Java Entityクラスとして使用しません。これでCleanPlanエンティティをこのどのようにして、私のassociationを宣言すべきですか?そのEventLocationクラスを記述し、次にCleanPlanエンティティクラスで@OnetoOne EvenLocationを記述する必要がありますか?そんな? – Shahriar

1

JPAでのこの問題の2つの側面があります。 1)マッピングテーブルが作成されます。 2)マッピングテーブルの代わりにマッピング行が作成されます。

第2の選択肢はあなたの人生を楽にしてくれると思います。しかしこれは、イベントとロケーションが一方向の関係を持つ場合にのみ可能です。次にManyToOne側に "mappedBy"を配置します。そしてそれはManyToOneテーブルのマッピングテーブルを生成します。また、その列をCleanPlanテーブルで参照できます。