如何使用Hibernate / JPA配置使用注释创建Bridge表。
1:BookModel 2:UserModel
现在我必须通过这两个字段创建一个桥表
book_id和user_id
您正在尝试在您的实体之间实现Many to Many
关系。因此,如果您在用户模型中有Books
列表,则可以按如下方式对列表进行注释:
public class UserModel {
@ManyToMany(cascade = CascadeType.REMOVE)
@JoinTable(name = "book_user_table", joinColumns = { @JoinColumn(name = "book_id") }, inverseJoinColumns = { @JoinColumn(name = "user_id") })
private List<BookModel> books;
//Getters and setters
}
在BookModel中,如果您有用户列表,那么您需要使用@mappedBy()
注释,如下所示:
@ManyToMany(mappedBy = "books")
private List<UserModel> users;
这将生成第3个表,其名称为book_user_table
,带有您需要的列。有关详细说明,请参阅此内容:https://dzone.com/tutorials/java/hibernate/hibernate-example/hibernate-mapping-many-to-many-using-annotations-1.html
根据我对您的问题的理解,您想知道如何映射书籍和用户,以便这些实体之间存在多对多的关联。
如果是这样,你需要在两个关联上指定@ManyToMany
,并使其中一个为反向,另一个以@JoinTable
结尾。这是一个example mapping。下面的片段。
@ManyToMany(cascade = { CascadeType.ALL })
@JoinTable(
name = "Employee_Project",
joinColumns = { @JoinColumn(name = "employee_id") },
inverseJoinColumns = { @JoinColumn(name = "project_id") }
)
Set<Project> projects = new HashSet<>();
相反,
@ManyToMany(mappedBy = "projects")
private Set<Employee> employees;