0
我嘗試在連接列上使用Spring數據JPA投影,但沒有成功。春天的數據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
我想什麼do是在這個連接上添加一個where子句,例如:
[....] 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();
}
我知道我可以使用一個SPEL表達在@Value做到這一點,但隨後春天將獲取實體的所有列而不僅僅是投影投影(開放投影)。
我也試過一個JPA規範在我的倉庫投影相結合:
List<CarProjection> findAllBy(Specification<CarProjection> specification);
但似乎我們不能混用規格和預測。
任何想法如何做到這一點?謝謝:)
FWIW Spring沒有生成任何查詢。你的JPA提供者確實。 –