結合データ型の条件付きSpringデータJPA予測を成功させようとします。Springデータjpa:投影フィールドにwhere句を追加します。
interface CarProjection {
String getName();
List<String> getColorsLabel();
}
class Car{
String name;
@OneToMany(mappedBy = "car")
List<Color> colors;
}
class Color{
String label;
@ManyToOne
Car car;
}
そして、次のリポジトリ方法:
List<CarProjection> findAllBy();
何もかもがうまく機能し、春には次のクエリを生成します。
[....] left outer join color colors1_ on car0_.id=colors1_.car_id
私がしたい以下のクラスを考えると
この結合にwhere句を追加することです(例:
0123)。プロジェクション・クラスで[....] left outer join color colors1_ on (car0_.id=colors1_.car_id AND colors1_.location='EXTERIOR')
、それはのようなもの与えるだろう:
interface CarProjection {
String getName();
@Where("label=='EXTERIOR'")
List<String> getColorsLabel();
}
を私はこれを行う@valueでのspel式を使用することができます知っているが、その後、春には、エンティティのすべての列を取得します投影されたものだけではなく(開いた投影)。
私も自分のリポジトリに投影してJPA仕様を結合しようとした:
List<CarProjection> findAllBy(Specification<CarProjection> specification);
しかし、我々が仕様や予測を混在させることはできませんようです。
これはどのようにするのですか?ありがとう:)
FWIW Springはクエリを生成しません。 JPAプロバイダが行います。 –