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

Hibernate中子表与关联表基于主表的关系配置咨询

在Hibernate中配置A、B、C的关联关系

先明确关联逻辑:

  • A与B为一对一关联,B作为A的子表
  • B通过A与C建立一对多关联(一个B对应多个C,关联依据是A的主键)

方式一:A与B共享主键(子表复用主表主键)

实体A代码

@Entity
@Table(name = "table_a")
public class A {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    // 一对一关联B,维护端在B,这里仅做映射
    @OneToOne(mappedBy = "a", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private B b;

    // 省略getter、setter、构造方法
}

实体B代码

@Entity
@Table(name = "table_b")
public class B {
    @Id
    @Column(name = "a_id") // 直接使用A的主键作为自身主键
    private Long id;

    // 关联A,@MapsId指定复用A的主键
    @OneToOne(fetch = FetchType.LAZY)
    @MapsId
    @JoinColumn(name = "a_id")
    private A a;

    // 通过A的主键关联C,这里不维护C的关联字段,避免数据冲突
    @OneToMany(fetch = FetchType.LAZY)
    @JoinColumn(name = "a_id", referencedColumnName = "id", insertable = false, updatable = false)
    private List<C> cList;

    // 省略getter、setter、构造方法
}

实体C代码

@Entity
@Table(name = "table_c")
public class C {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    // 外键关联A的主键
    @Column(name = "a_id")
    private Long aId;

    // 其他业务字段示例
    private String content;

    // 省略getter、setter、构造方法
}

方式二:B使用独立主键+外键关联A

如果B需要独立主键,可修改B的配置:

@Entity
@Table(name = "table_b")
public class B {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    // 外键关联A,unique约束保证一对一关系
    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "a_id", unique = true)
    private A a;

    // 同样通过A的主键关联C
    @OneToMany(fetch = FetchType.LAZY)
    @JoinColumn(name = "a_id", referencedColumnName = "id", insertable = false, updatable = false)
    private List<C> cList;

    // 省略getter、setter、构造方法
}

关键说明

  • 一对一关联中,mappedBy指定维护端在B,A无需管理关联字段,避免双向维护导致的冲突
  • B关联C时,insertable=false, updatable=false表示B不负责修改C的a_id字段,由C自身或A维护,保证数据一致性
  • 若需要懒加载优化,可设置fetch = FetchType.LAZY,避免查询B时一次性加载所有C数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:41:12