1

次のようなクラス構造があるとします (注釈は削除されています)。

public class Person {
  String store;

  Swatch swatch;

  Collection<Paint> paints;
}

public class Swatch {
  String color;
}

public class Paint {
  String color;

  String store;
}

Store が null になることはなく、Person と Paint の間で使用されるキーです。目標は、Swatch と同じ色のすべての Paint レコードを、Person と同じストアに一致させることです。ただし、Swatch が null であるか、その color 属性が null である可能性があります (どちらの場合も、Person と同じストアを持つすべてのペイントを返します)。

paints コレクションでこのクエリを構築する JPA または Hibernate ベースのアノテーションはありますか?

4

1 に答える 1

0

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

私の解決策はかなりハックでした: Person には、プログラムでペイントをフィルタリングする Transient 注釈付きメソッドがあります。Swatch エンティティを取得するために追加のクエリが必要になる可能性があるため、理想的とは言えません。

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

于 2011-08-11T23:47:38.473 に答える