y0b*_*0bu 3 java hibernate jpa spring-data spring-data-jpa
我已经遵循本教程https://codingexplained.com/coding/java/spring-framework/return-boolean-value-from-spring-data-jpa-query,他解释了如何从 JpaRepository 返回布尔类型,以便是做什么的:
@Transactional
@Override
@Query(value = "SELECT CASE WHEN COUNT(*) = 1 THEN true ELSE false END FROM admins WHERE admins.admin_name = 'admin' AND admins.password = 'admin'", nativeQuery = true)
boolean IsBaseAdminAccountExist();
Run Code Online (Sandbox Code Playgroud)
这东西正在扔exception is java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Boolean
小智 8
同样的错误,我分享我的解决方案:
当您构建查询并转换 true 或 false 时,必须将其括在引号中,如下所示:
@Query(value = "SELECT CASE WHEN COUNT(*) = 1 THEN 'true' ELSE 'false' END FROM admins WHERE admins.admin_name = 'admin' AND admins.password = 'admin'", nativeQuery = true)
boolean IsBaseAdminAccountExist();
Run Code Online (Sandbox Code Playgroud)
另外,我建议使用 MYSQL IF 条件来简化查询,它看起来像这样:
@Query(value = "SELECT IF(COUNT(*) > 0, 'true', 'false') FROM admins WHERE admins.admin_name = 'admin' AND admins.password = 'admin'", nativeQuery = true)
boolean IsBaseAdminAccountExist();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4497 次 |
| 最近记录: |