2011-08-10 17 views
1

私は、次の(削除注釈)のように見えるクラス構造を持っている場合:コレクションを条件付きでHibernateアノテーションにマップするにはどうすればよいですか?

public class Person { 
    String store; 

    Swatch swatch; 

    Collection<Paint> paints; 
} 

public class Swatch { 
    String color; 
} 

public class Paint { 
    String color; 

    String store; 
} 

ストアがnullになることはありませんし、人とペイントの間で使用する鍵です。目的は、すべてのペイントレコードを、スウォッチと同じ色でPersonと同じ店舗で照合することです。ただし、Swatchはnullでもかまいません。また、その色属性はnullでもかまいません(どちらの場合もPersonと同じストアを持つすべてのペイントが返されます)。

ペイントコレクションでこのクエリを作成するJPAまたはHibernateベースのアノテーションはありますか?

+0

これは、作成する必要があるクエリの仕事によく似ています。 –

答えて

0

これは、Hibernateアノテーションでは不可能であるか、あまり明らかではないと結論付けました。

私の解決策はむしろハッキリでした。Personには、ペイントをプログラムでフィルタリングするTransientアノテーション付きのメソッドがあります。 Swatchエンティティを取得するために追加のクエリを強制する可能性があるため、理想的ではありません。

Vineet Reynoldsの質問を作成する答えは、私が提示したケースではおそらく最も合理的だと思います。しかし、私の実際のシナリオでは、私の例とは無関係であると思われる言及されていない要因があるため、クエリを実装するのは難しく、重要な複雑さが増していると言えます。

関連する問題