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

含复杂字段的@Embeddable复合主键JPA/Hibernate表映射问题

JPA复合主键映射(@EmbeddedId 实现方案)

你目前用 @EmbeddedId 来实现 global_task_dependency 表的复合主键映射,这是JPA处理复合主键的标准方案之一。下面是格式化后的代码片段,以及核心注意点说明:

实体类:GlobalTaskDependency

@Data
@Entity
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "global_task_dependency")
public class GlobalTaskDependency implements Serializable {
    private static final long serialVersionUID = 1901782042815898352L;

    @EmbeddedId
    private GlobalTaskDependencyPK id;
}

复合主键类:GlobalTaskDependencyPK

@Data
@AllArgsConstructor
@NoArgsConstructor
@Embeddable
public class GlobalTaskDependencyPK implements Serializable {
    private static final long serialVersionUID = // 补充你的序列化ID值;
    // 这里需要添加对应数据库复合主键的字段,示例:
    // @Column(name = "task_id")
    // private Long taskId;
    // @Column(name = "dependent_task_id")
    // private Long dependentTaskId;
}

核心注意事项

  • 复合主键类必须实现 Serializable 接口,这是JPA的强制要求,确保主键能被序列化用于持久化和传输。
  • @Embeddable 注解标记该类是可嵌入的主键类型,会被实体类引用作为完整主键。
  • 实体类通过 @EmbeddedId 替代常规的 @Id 注解,关联复合主键实例。
  • 主键类的字段要和数据库表的复合主键列一一对应,如果字段名和数据库列名不一致,记得用 @Column 注解做映射。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:22:50