我是 JPA 的新手,对如何处理实体有疑问。在我的例子中,我有 3 个实体:用户、组和事件。
一个事件总是属于一个组。这意味着存在一对多关系。一个用户可以订阅多个组,这意味着存在多对多关系。现在是我遇到麻烦的部分。用户还可以订阅多个事件,这意味着还有一个多对多关系。
用户
@Entity
public class User {
@Id
@GeneratedValue
private Integer id;
@Embedded
@OneToOne
@JoinColumn(name = "company_location")
private CompanyLocation companyLocation;
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(
name = "user_group_subscriptions",
joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "group_id", referencedColumnName = "id"))
private List<Group> subscribedGroups;
...
}
组
@Entity
public class Group {
@Id
@GeneratedValue
private Integer id;
@OneToMany(???)
private List<Event> events;
...
}
现在是我的问题。我怎样才能在我的组实体中获得一个列表,其中包含依赖于用户实体的订阅事件? 我的目标是这样的:
user.getSubscribedGroups().get(0).getSubscribedEvents();
最佳答案
试试这个:
@Entity
public class Event{
@Id
@GeneratedValue
private Integer id;
@ManyToOne
@JoinColumn(name = "your_column")
private Group group;
@ManyToMany
@JoinTable(....)
private List<User> users;
...
}
@Entity
public class Group {
@Id
@GeneratedValue
private Integer id;
@OneToMany(mappedBy = "group")
@Cascade(org.hibernate.annotations.CascadeType.ALL)
private List<Event> events;
...
}
关于java - JPA:如何处理多个实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40487300/