JPA中的人和孩子关系,其中孩子也是一个人



在JPA中,有没有办法对以下关系进行建模?

人   国际 ID PKEY   瓦查尔名称孩子   INT parentId FKEY(PERSON->id)   INT nameId FKEY(PERSON->id)

其中parentId是多对一关系,nameId是一对一关系。那么,从本质上讲,parentIdnameId会在 CHILD 中创建复合主键吗?

谢谢!

我会nameId重命名为childId。从逻辑上讲,一个人和它的孩子之间有一种关系。每个孩子本身就是一个人。对于您当前拥有的模型,没有理由拥有单独的child表,但假设您稍后将添加不同的属性。我将使用继承和聚合对关系进行建模:

@Entity
@Table(name="PERSON")
@Inheritance(strategy=InheritanceType.JOINED)
public class Person implements Serializable {
    @Id
    private Integer id;
    private String name;
    @OneToMany(mappedBy = "parent")
    private List<Child> children;
}
@Entity
@Table(name="CHILD")
@PrimaryKeyJoinColumn(name="nameId", referencedColumnName = "id")
private class Child extends Person implements Serializable {
    @ManyToOne
    @JoinColumn(name = "parentId", referencedColumnName = "id")
    private Person parent;
}

这是示例代码,逐字输入,您必须自己进行错误检查。但这是一个起点。

可以为方案创建实体。但是表设计应该是 nameId 应该是子表的主键,如果您在创建实体类时遇到问题,那么在 NetBeans IDE 或 Eclipse IDE 中,有一个用于创建实体类的"表中的实体类"选项。

相关内容

最新更新