Cześć,
stworzyłem w bazie danych metodę której użyłem do swotrzenia custom query w repozytorium:
@Query(value = "SELECT * FROM SHAPES WHERE COUNT_AREA(TYPE, RADIUS, WIDTH, HEIGHT) >= ?1", nativeQuery = true)
List<ShapeEntity> getWithAreaGreaterThan(double area);
Walczę również ze specyfikacjami, aby dane można było wygodnie i szybko filtrować.
Jednak mam problem z polem. "COUNT_AREA" to funkcja w bazie danych. Czy mogę w jakiś sposób użyć tego do specyfikacji? Nie mogę nic wygooglować na ten temat i obawiam się, że nie będzie to możliwe, ponieważ Specyfikacja operuje na polach klasy, które robię bez problemu:
public static Specification<ShapeEntity> radiusGreaterThan(Double radiusFrom) {
return (root, query, builder) ->
radiusFrom == null ?
builder.conjunction() :
builder.greaterThan(root.get("shapes").get("radius"), radiusFrom);
}
Więc pytanie czy będzie to w ogóle możliwe czy raczej powinienem zrobić to dynamiczne wyszukiwanie w zupełnie inny sposób?