我在一个继承了JpaRepository
接口的本地查询中。该方法最好返回一个布尔值,但我无法找出如何选择任何自动转换为boolean
的内容。
这个方法可以正常工作,虽然我必须将其调用为Boolean.valueOf(hasKids(id))
:
// yuck. I wanted a boolean
@Query(nativeQuery = true, value = "select 'true' from dual where exists("
+ "select * from child_table where parent_id = ?)")
String hasKids(long parentId);
我该如何将此更改为更自然的返回类型?
boolean hasKids(long parentId); // throws ClassCastException
更新:
我个人认为堆栈跟踪并没有太大帮助,因为通常会出现 Hibernate 代理和 AspectJ 闭包的问题,但无论如何这里是相关部分。
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean
at com.sun.proxy.$Proxy1025.hasKids(Unknown Source)
at com.bela.foo.bar.Service.ThingyServiceImpl.recordHasKids_aroundBody4(ThingyServiceImpl.java:85)
at com.bela.foo.bar.Service.ThingyServiceImpl$AjcClosure5.run(ThingyServiceImpl.java:1)
...
select 1
和select 'Y'
,但是两种情况都出现了 ClassCastException。 - Béla