You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring JPA查询实体布尔属性报错,如何正确实现该查询?

解决方法

出错原因是你用了数据库的表名和列名编写查询,但默认@Query使用的是JPQL(面向实体的查询语言)而非原生SQL,JPQL会把T_MYTABLE和IS_ACTIVE解析成实体相关对象,导致返回类型和方法声明的Boolean不匹配。以下是几种正确实现方式:

方式一:使用JPQL查询实体属性

直接针对实体类MyClass的属性编写查询,JPQL会自动映射到对应的数据库表和字段:

public interface MyClassRepository extends Repository<MyClass, Long> {
    @Query("SELECT mc.isActive FROM MyClass mc WHERE mc.id = ?1")
    Boolean isActive(Long id);
}

方式二:使用原生SQL查询

如果要直接操作数据库表和列,需要给@Query添加nativeQuery = true参数,明确这是原生SQL:

public interface MyClassRepository extends Repository<MyClass, Long> {
    @Query(value = "SELECT IS_ACTIVE FROM T_MYTABLE WHERE ID = ?1", nativeQuery = true)
    Boolean isActive(Long id);
}

方式三:使用Spring Data方法命名规则(无需手动写查询)

Spring Data支持根据方法名自动生成查询,这种方式更简洁:

public interface MyClassRepository extends Repository<MyClass, Long> {
    Boolean findIsActiveById(Long id);
}

内容的提问来源于stack exchange,提问作者user13121591

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 14:22:47