一个实体之间的继承 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
我知道这个问题可以很简单,但是,无论如何,我想使用 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