我已经按照这个教程https://codingexplained.com/coding/java/spring-framework/return-boolean-value-from-spring-data-jpa-query他在那里解释了如何从 JpaRepository 返回 boolean 类型,这就是所做的:
@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();
这件事抛出异常是java.lang.ClassCastException:java.math.BigInteger无法转换为java.lang.Boolean
最佳答案
同样的错误,我分享我的解决方案:
当您构建查询并转换 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();
此外,我建议使用 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();
关于java - JpaRepository - Hibernate - java.math.BigInteger 无法转换为 java.lang.Boolean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61621342/