JPA 多对多关联实体
JPA Many to many association entity
我正在使用 JPA ORM 开发带有嵌入式数据库的 Java EE 项目。我的问题是...
当我在两个实体中创建@ManyToMany 字段时,我也必须创建关联实体,否则它将为我做容器?
课程实体片段
Public class Course implements Serializable {
...
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
@ManyToMany
@JoinTable(name="course_user", joinColumns={@JoinColumn(name="course_id", referencedColumnName="id")},
inverseJoinColumns={@JoinColumn(name="user_id", referencedColumnName="id")})
private List<User> enrolledStudents;
...
用户实体片段
public class User implements Serializable {
private static final long serialVersionUID = 1L;
...
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
@ManyToMany(mappedBy="enrolledStudents")
private List<Course> enrolledCourses;
...
这是我需要的一切吗?谢谢解答!
是的,这就是您所需要的...如果您从代码创建数据库,您将看到三个表...课程、用户和 Course_User 具有 Couse 和用户
是的,这就足够了。看看例子
http://en.wikibooks.org/wiki/Java_Persistence/ManyToMany
这会起作用,但请看这里:
Hibernate Best Practices: Avoiding Many-To-Many and 'exotic' relationships
在某些时候,您很可能希望保存有关此关系的其他信息(例如注册日期?)因此您不妨预先创建 'join entity' 以保存重构。
我正在使用 JPA ORM 开发带有嵌入式数据库的 Java EE 项目。我的问题是...
当我在两个实体中创建@ManyToMany 字段时,我也必须创建关联实体,否则它将为我做容器?
课程实体片段
Public class Course implements Serializable {
...
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
@ManyToMany
@JoinTable(name="course_user", joinColumns={@JoinColumn(name="course_id", referencedColumnName="id")},
inverseJoinColumns={@JoinColumn(name="user_id", referencedColumnName="id")})
private List<User> enrolledStudents;
...
用户实体片段
public class User implements Serializable {
private static final long serialVersionUID = 1L;
...
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
@ManyToMany(mappedBy="enrolledStudents")
private List<Course> enrolledCourses;
...
这是我需要的一切吗?谢谢解答!
是的,这就是您所需要的...如果您从代码创建数据库,您将看到三个表...课程、用户和 Course_User 具有 Couse 和用户
是的,这就足够了。看看例子 http://en.wikibooks.org/wiki/Java_Persistence/ManyToMany
这会起作用,但请看这里:
Hibernate Best Practices: Avoiding Many-To-Many and 'exotic' relationships
在某些时候,您很可能希望保存有关此关系的其他信息(例如注册日期?)因此您不妨预先创建 'join entity' 以保存重构。