java - JpaRepository - Hibernate - java.math.BigInteger 无法转换为 java.lang.Boolean

标签 java hibernate jpa spring-data-jpa spring-data

我已经按照这个教程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/

相关文章:

java - Hibernate 中的空集合与空集合

hibernate - JPA,Hibernate 我可以做复合主键,其中一个元素是外键@OneToMany?

java - JPA 2.1 StoredProcedureQuery 与 PostgreSQL 和 REF_CURSORs

java - 从另一个 Activity 获取数据会给出 RuntimeException

Java 7u51 : LiveConnect (JavaScript) blocked due to security settings

java - @Convert 不适用于 Hibernate 和 QueryDSL

java - Maven依赖声明触发编译过程的变化?

mysql - Tomcat - MySQL - Hibernate - c3p0 超时/管道损坏

java - Hibernate 合并不会删除 OneToMany 旧实体

java - servlet 是如何工作的?