【发布时间】:2013-11-19 11:20:00
【问题描述】:
我想创建 M:N 关系如下
每个用户可以拥有零个或许多电子书
每本电子书必须属于一个或多个用户
我在 Hibernate 中的映射:
User.java
@Entity
@Table(name = "USERS")
public class User {
//...
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinTable(name = "USER_EBOOK", joinColumns = @JoinColumn(name = "USER_ID", nullable = false),
inverseJoinColumns = @JoinColumn(name = "EBOOK_ID", nullable = false))
private List<Ebook> listOfEbooks = new ArrayList<Ebook>();
//...
}
Ebook.java
@Entity
@Table(name="EBOOK")
public class Ebook {
//...
@ManyToMany(mappedBy = "listOfEbooks", fetch = FetchType.EAGER)
@NotFound(action = NotFoundAction.EXCEPTION)
private List<User> listOfEbookUsers = new ArrayList<User>();
//...
}
当我仅将电子书对象保存到数据库时,如何添加此附加约束,例如 one or many - zero or many?有不属于任何人的电子书。
【问题讨论】:
-
您是否尝试过创建具有额外逻辑的设置器?
-
我有默认生成的设置器 .. 嗯,在添加没有所有者的电子书之前,您究竟是如何想到要阻止的?,换句话说,要制作一个或多个,休眠创建零个或多个据我所见
-
这是一组奇怪的要求。只有与用户关联的电子书实体才能存在?如果我想创建一本电子书 A,如果没有用户拥有电子书 A,会发生什么?是否至少有一个 default 用户的概念?
标签: java hibernate jakarta-ee entity-relationship