2016-11-27 12 views
5

Tôi có giao diện @Repository với phương pháp sau đây để kiểm tra cơ sở dữ liệu IF có chứa một bản ghi va chạm (trong ý nghĩa tên miền kinh doanh) với một vẫn tồn tại (tôi không quan tâm về những gì các hồ sơ va chạm là):JPA @Query với 'trường hợp khi tồn tại' không hoạt động với 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); 

bảng mà tôi chạy nó là rỗng (PostgreSQL) do đó tồn tại subquery không nên tìm bất cứ điều gì và tôi tin rằng toàn bộ phương thức phải trả về false là trường hợp nói rằng nó chỉ có thể trả về true nếu tồn tại và sai khác.

Nó trả #facepalm rỗng

truy vấn của tôi đi kiểm tra cú pháp truy vấn khi khởi động (không QuerySyntaxException) nhưng ném ngoại lệ khi thực hiện:

org.springframework.aop.AopInvocationException: Null return value from advice does not match primitive return type for: public abstract boolean findColliding(...) 

Tôi đang làm gì sai? Tôi có nên thực hiện một số cách tiếp cận khác cho vấn đề của mình không?

Hibernate 5.0.11.Final

+0

Bạn có chắc đây là vấn đề ngủ đông chứ không phải vấn đề dữ liệu về mùa xuân? Tôi đã không thử chính xác truy vấn đó, nhưng tôi khá chắc chắn rằng tôi đã có một cái gì đó giống như làm việc. –

Trả lời

Các vấn đề liên quan