java - 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
解决方案
同样的错误,我分享我的解决方案:
当您构建查询并转换 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();
推荐阅读
- discord.js - Discord.js票务系统错误发送未定义错误
- javascript - javascript类的方法定义不起作用 - 反应
- node.js - 如何为 Joi 中的所有字段设置默认自定义消息
- parsing - 如何修复以下 Read1 实例?
- javascript - 切换显示所有类
- reactjs - 调用 API 来检索数据是一项繁重的操作
- typescript - 如何在 Typescript 中使用 Proxy 重新定义方法的返回类型
- python - Azure(函数)参数在 Python 中声明,但不在 function.json 中
- android - Android:如何用改造填充数组列表(Kotlin)
- html - 如何在没有javascript的情况下更改按钮文本