2016-11-27 82 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

你确定这是一个休眠问题,而不是一个春天的数据问题?我还没有尝试过那个查询,但我很确定我已经有这样的工作。 –

回答