我很清楚,当使用 JPA 处理数据集合时,如何注释 List、ArrayList、Collections 等类型的成员(@OneToMany 或 @ManyToMany 等),但是如果我们有以下:
@Entity
class page{
Person creator;
Person modifier;
Person owner;
}
在这种情况下,我希望做出设计决策,不具有任何类型的人员实体集合,而是单独列出变量。我对如何正确注释这些成员感到困惑。
我是否正确地假设我应该将它们注释为一个列表,即使它们是单独列出的,即
@ManyToMany 因为“许多页面包含许多人”和“许多页面涉及许多人”,而不是@ManyToOne“许多页面包括人的一个创建者实例”(没有只有人的创建者实体,创建者将只能是Page的成员变量)?
最佳答案
您正在寻找的是多对一关系。
这句话的意思很简单:
@ManyToOne
- 一个人可以创建多少个页面?很多。
- 多少人可以创建一个页面?一个
@ManyToMany
- 一个人可以修改多少页?很多
- 有多少人可以修改单个页面?很多(但我会在这里使用 OneToMany 并拥有修改页面的人员列表。@ManyToMany 会很棘手)
@ManyToOne
- 如何让一个人拥有多个页面?很多
- 人们如何才能拥有单个页面?一位(有时你可以有多个所有者, 但在您的情况下,我猜测只需要一个所有者)
所以:
@Entity
public class Page{
@ManyToOne
private Person creator;
@OneToMany
private List<Person> modifiers;
@ManyToOne
private Person owner; //which i guess may be the same as owner.
}
关于java - JPA 注释、列表与单独包含的实例相反,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24861892/