一个实体之间的继承 table

Inheritance between entities within one table

我知道这个问题可以很简单,但是,无论如何,我想使用 hibernate 在 table 中实现简单的父子关系:

Parent
|       \
Child1  Child2
|           |
Junior1    Junior2

因此它在数据库中应该类似于以下内容:

id |  name | parent_id
1    Parent   null
2    Child1    1
3    Child2    1
4    Junior1   2
5    Junior2   3 

如果是@Entity class:

@Entity
@Table(name = "PARENT_CHILD")
public class ParentChild {

    @Id
    @Column(name = "ID", nullable = false, unique = true)
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;

    @Column(name = "NAME", nullable = false)
    private String name;

    private String parentId; // <------ how this should be mapped?
}

关于我应该如何映射 parentId 或以其他方式进行以下操作的最佳做​​法是什么?谢谢

通常情况下,您可以创建关系映射以在 StateEntity 内进行映射

@ManyToOne
@JoinColumn(name="parent_id", referencedColumnName="id")
private ParentChild parent;

如果它是父级,那么它的父级可以为空。

如果在您的项目中,由于性能原因,有时您只想加载 parent_id 而不是整个 ParchentChild 父实例。您也可以添加列映射

@Column(name="parent_id", insertable=false, updatable=false)
private int parentId;

insertable=false, updatable=false 也确保你的系统可以通过@ManyToOne 字段更新parent_id