java - JPA 注释、列表与单独包含的实例相反

标签 java jpa

我很清楚,当使用 JPA 处理数据集合时,如何注释 List、ArrayList、Collections 等类型的成员(@OneToMany 或 @ManyToMany 等),但是如果我们有以下:

    @Entity    
    class page{

        Person creator;
        Person modifier;
        Person owner;
    }

在这种情况下,我希望做出设计决策,不具有任何类型的人员实体集合,而是单独列出变量。我对如何正确注释这些成员感到困惑。

我是否正确地假设我应该将它们注释为一个列表,即使它们是单独列出的,即

@ManyToMany 因为“许多页面包含许多人”和“许多页面涉及许多人”,而不是@ManyToOne“许多页面包括人的一个创建者实例”(没有只有人的创建者实体,创建者将只能是Page的成员变量)?

最佳答案

您正在寻找的是多对一关系。

这句话的意思很简单:

@ManyToOne

  1. 一个人可以创建多少个页面?很多。
  2. 多少人可以创建一个页面?一个

@ManyToMany

  1. 一个人可以修改多少页?很多
  2. 有多少人可以修改单个页面?很多(但我会在这里使用 OneToMany 并拥有修改页面的人员列表。@ManyToMany 会很棘手)

@ManyToOne

  1. 如何让一个人拥有多个页面?很多
  2. 人们如何才能拥有单个页面?一位(有时你可以有多个所有者, 但在您的情况下,我猜测只需要一个所有者)

所以:

@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/

相关文章:

java - 持久性单元错误 : javax. persistence.PersistenceException:没有名为 EntityManager 的持久性提供程序

java - 使用servlet连接到数据库

java - "Unexpected token: Void"for循环导致IDE处理错误,无论位置如何?

java - JPA - 从 REST 服务获取子对象

java - 在 java hibernate 中,父 id 不插入到具有一对多关系的子表

hibernate - 从子查询 criteriaBuilder 中选择

java - 如何在 JPA 中正确关联具有多个键的表

java错误代码。请检查(java)

java - Eclipse/SWT : Rectangle taking up entire canvas

java - EditText 中的问题