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

Quarkus Hibernate with Panache查询意外添加ID列如何解决

解决方案

根因说明

你遇到的问题由PanacheEntity的默认特性导致:该父类内置了一个标注@Id的id字段,Hibernate会默认将其作为主键加入所有生成的SQL语句中,与你现有无id列的DB2表结构不匹配。

解决步骤

  1. 更换实体类父类:将原有extends PanacheEntity修改为extends PanacheEntityBase。PanacheEntityBase是Panache官方提供的无默认主键的基类,支持完全自定义主键规则,原有的find、persist等Panache便捷操作方法均可正常使用,无功能差异。
  2. 配置自定义主键:给业务主键字段IDSCOMP添加@Id注解,若你的DB2实例对表名字段名大小写敏感,可以补充@Column注解显式指定列映射关系,避免映射错误。

修改后完整实体类示例

@Entity
public class PCFPIDS extends PanacheEntityBase {
    @Id
    @Column(name = "IDSCOMP", length = 2)
    public String IDSCOMP;
    @Column(name = "IDSID")
    public String IDSID;
    @Column(name = "IDSMAX")
    public int IDSMAX;

    public static PCFPIDS getLatestSession() {
        return find("IDSCOMP", "##").firstResult();
    }
}

修改完成后重启应用,Hibernate生成的SQL将不再自动拼接id字段,完全适配你现有表结构,无需调整DB2端的表定义。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:06:08