gpt4 book ai didi

java - JPA 中的人与子关系,其中 Child 也是人

转载 作者:行者123 更新时间:2023-12-01 14:59:14 24 4
gpt4 key购买 nike

在 JPA 中,有什么方法可以模拟以下类型的关系吗?

PERSON   INT id PKEY   VARCHAR nameCHILD   INT parentId FKEY(PERSON->id)   INT nameId FKEY(PERSON->id)

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

谢谢!

最佳答案

我会将 nameId 重命名为 childId。从逻辑上讲,一个人与其 child 之间存在关系。每个 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;
}

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

关于java - JPA 中的人与子关系,其中 Child 也是人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13917539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com