我知道问题可以很简单,但无论如何,我想在一个表中使用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或以下方式做出以下的最佳做法是什么?谢谢
答案 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