Mam interfejs @Repository z następującą metodą sprawdzania, czy baza danych zawiera kolizyjny rekord (w znaczeniu domeny biznesowej) z tym Mam zamiar utrzymują się (ja nie dbam o to, co zapisy kolidujące są):JPA @Query z "przypadkiem, gdy istnieje" nie działa z Hibernate
@Query("select case when exists (
select me from MyEntity me where {my conditions regarding someParam here}
) then true else false end from MyEntity")
boolean findColliding(@Param("someParam") String someParam);
tabeli na której prowadzony jest pusta (PostgreSQL) dlatego istnieje podzapytanie nie powinien znaleźć coś i wierzę, że cała metoda powinna zwracać wartość false, ponieważ case stwierdza, że może zwracać tylko wartość true, jeśli istnieje, a false w przeciwnym wypadku.
zwraca NULL #facepalm
Moje zapytanie przechodzi sprawdzanie składni zapytań przy starcie (bez QuerySyntaxException), ale rzuca wyjątek, gdy wykonywane:
org.springframework.aop.AopInvocationException: Null return value from advice does not match primitive return type for: public abstract boolean findColliding(...)
Co robię źle? Czy powinienem przyjąć inne podejście do mojego problemu?
Hibernate 5.0.11.Final
Czy na pewno jest to problem hibernacji, a nie problem z danymi sprężyny? Nie próbowałem dokładnie tego zapytania, ale jestem pewien, że już coś takiego działa. –