一个表

时间:2016-07-01 09:12:57

标签: java hibernate jpa orm persistence

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

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类:

@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或以下方式做出以下的最佳做法是什么?谢谢

1 个答案:

答案 0 :(得分:1)

通常,您可以创建一个关系映射以在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