2016-11-27 79 views
5

工作,我有以下方法@Repository接口,用於檢查是否數據庫包含一個記錄碰撞(在商業領域的含義)與一個 我要「時存在的情況下」堅持(我不關心什麼碰撞記錄):JPA @Query與不與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); 

上,我運行它是空表(PostgreSQL的),因此存在子查詢應該找不到任何東西,我相信整個方法應該返回false爲case表明它只能返回true,否則返回false。

,則返回null #facepalm

我的查詢傳遞啓動(無QuerySyntaxException)查詢語法檢查,但在執行時拋出異常:

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

我在做什麼錯?我應該採取其他方法解決我的問題嗎?

休眠5.0.11.Final

+0

你確定這是一個休眠問題,而不是一個春天的數據問題?我還沒有嘗試過那個查詢,但我很確定我已經有這樣的工作。 –

回答