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

JPA继承映射报错:ResultSet未找到default列的解决方案咨询

解决办法

问题根源

default是PostgreSQL的保留关键字,你的ClassID类中defaultCustom属性会被JPA默认映射为default_custom列,但直接在原生查询中使用该别名时,PostgreSQL会将default识别为关键字,导致结果集字段解析异常,最终出现找不到default列的错误。

可行方案(无需修改模型结构)

方案1:给关键字别名添加双引号

修改原生查询,将default_custom别名用双引号包裹,强制PostgreSQL将其视为普通标识符,同时保证与JPA的驼峰转下划线映射规则匹配:

@Repository
public interface MyRepository extends JpaRepository<MySuperClass, ClassID> { // 注意:泛型ID需改为ClassID,原代码的Long不符合嵌入式ID类型

    @Query(value = "SELECT t.*, 0 as \"default_custom\", null as type FROM My_Entity t WHERE t.id= :id", nativeQuery = true)
    List<MyEntity> getMyEntity(String id);
}

补充:原Repository的泛型第二个参数是Long,但你的超类使用的是嵌入式IDClassID,这会导致JPA操作异常,建议一并修正为ClassID,不影响现有继承结构。

验证要点

  • 确保PostgreSQL查询返回的字段别名与JPA属性的映射列名完全匹配(驼峰转下划线规则)
  • 所有涉及PostgreSQL保留关键字的标识符必须用双引号包裹

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 17:45:48