Hibernate - 用户和他的报告列表

时间:2014-07-29 11:51:17

标签: java hibernate jpa

我有一个名为User的实体。我决定每个用户都有`Report(也是实体)列表。然后我创建了这样的东西:

@Entity
@Table(name="user")
public class User implements Serializable{
    @Id
    @GeneratedValue
    private long id;
    ...
    @ElementCollection
    private List<Report> reportList;

现在Report对象如下所示:

@Entity
@Table(name = "report")
public class Report implements Serializable{
    @Id
    @GeneratedValue
    private long id;
    ...
    @ManyToOne
    private User reporter;

这是正确的做法吗?每个用户都可以拥有多个报告,但每个报告只能属于一个用户。

我考虑过将@ElementCollection更改为@ManyToOne,但我认为我更喜欢在列表中进行操作。

主要问题是,如何在用户和他们的报告之间建立关系(连接)?

1 个答案:

答案 0 :(得分:1)

不,这不是正确的做法。 ElementCollection用于简单类型(字符串日期等)或可嵌入类型的集合。对于实体集合,您需要OneToMany关联(这是非常正常的,假设您在另一个方向上有ManyToOne):

  • 一个用户有很多报告
  • 一位用户报告了许多报告

@OneToMany(mappedBy = "reporter")
private List<Report> reportList;

The documentation详细介绍了这一点。