首页 > 解决方案 > JpaRepository - Hibernate - java.math.BigInteger 不能转换为 java.lang.Boolean

问题描述

我已经按照本教程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();

这东西在扔exception is java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Boolean

标签: javahibernatejpaspring-data-jpaspring-data

解决方案


同样的错误,我分享我的解决方案:

当您构建查询并转换 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();

推荐阅读