Java Hibernate中的可选多对多关系
我想创建如下的M:N关系Java Hibernate中的可选多对多关系,java,hibernate,jakarta-ee,entity-relationship,Java,Hibernate,Jakarta Ee,Entity Relationship,我想创建如下的M:N关系 每个用户可以拥有0本或多本电子书 每本电子书必须属于一个或多个用户 我在Hibernate中的映射: User.java @实体 @表(name=“USERS”) 公共类用户{ //... @ManyToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER) @JoinTable(name=“USER\u EBOOK”,joinColumns=@JoinColumn(name=“USER\u ID”,nullable
- 每个用户可以拥有0本或多本电子书
- 每本电子书必须属于一个或多个用户
@实体
@表(name=“USERS”)
公共类用户{
//...
@ManyToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
@JoinTable(name=“USER\u EBOOK”,joinColumns=@JoinColumn(name=“USER\u ID”,nullable=false),
inverseJoinColumns=@JoinColumn(name=“EBOOK\u ID”,nullable=false))
private List-listOfEbooks=new-ArrayList();
//...
}
Ebook.java
@实体
@表(name=“电子书”)
公共类电子书{
//...
@ManyToMany(mappedBy=“listOfEbooks”,fetch=FetchType.EAGER)
@NotFound(action=NotFoundAction.EXCEPTION)
private List listOfEbookUsers=new ArrayList();
//...
}
如何添加此附加约束,例如一个或多个-零个或多个?当我仅将电子书对象保存到数据库时,存在不属于任何人的电子书。请参阅此问题和线程的答案:
本教程提供了如何实现适当的多对多映射的非常好的示例。您是否尝试使用额外的逻辑创建setter?我有默认生成的setter。。嗯,在添加之前,你到底是如何得到阻止的想法的,例如,没有所有者的电子书?换句话说,要制作一个或多个,hibernate根据我看到的创建零个或多个
@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>();
//...
}
@Entity
@Table(name="EBOOK")
public class Ebook {
//...
@ManyToMany(mappedBy = "listOfEbooks", fetch = FetchType.EAGER)
@NotFound(action = NotFoundAction.EXCEPTION)
private List<User> listOfEbookUsers = new ArrayList<User>();
//...
}