0

私にはエンティティAとエンティティBがあります。エンティティBはと3つです。また、エンティティAは常に1つのエンティティBとのみリンクしています。

以下は、この関係をツリーとして表しています。

A1
+-B1
 +-B2
 +-B3
 | +-B4
 |
 +-B5
 +-B6
   +-B7
     +-B8

そして、これがエンティティBを表すためにデータベースに保存されているデータです。

#parent_id entity_a_id name
1 null 1 B1
2 1 1 B2
3 1 1 B3
4 3 1 B4
5 1 1 B5
6 1 1 B6
7 6 1 B7
8 7 1 B8

エンティティAにマップしてルートエンティティBを取得したいのですが、これは、entity_a_idが現在の(おそらくmappedBy)と同じで、parent_idがnullであるエンティティBを取得したいという意味です。これまで、リレーションシップにカスタムクエリを追加する方法が見つかりませんでした(parent_idはnullです)。出来ますか?

4

1 に答える 1

1

要件を正しく理解している場合は、関係フィールドを制限して、基準に基づいて特定のエンティティのみを含めるようにします。この場合、Hibernateフィルターが役立つ場合があります。

編集:Hibernate@Whereは条件付き結合のアノテーションも備えています。この簡単な例を見てください

于 2012-12-05T16:53:07.603 に答える