我有一个名为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
,但我认为我更喜欢在列表中进行操作。
主要问题是,如何在用户和他们的报告之间建立关系(连接)?
答案 0 :(得分:1)
不,这不是正确的做法。 ElementCollection用于简单类型(字符串日期等)或可嵌入类型的集合。对于实体集合,您需要OneToMany
关联(这是非常正常的,假设您在另一个方向上有ManyToOne):
@OneToMany(mappedBy = "reporter")
private List<Report> reportList;
The documentation详细介绍了这一点。