JPA很多很多协会实体

时间:2015-02-26 20:48:21

标签: java hibernate java-ee jpa orm

我正在使用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;
...

这就是我需要与否的一切吗?谢谢你的回答!

3 个答案:

答案 0 :(得分:1)

这会有效,但请看这里:

Hibernate Best Practices: Avoiding Many-To-Many and 'exotic' relationships

在某些时候,您很可能希望保存有关此关系的其他信息(例如注册日期?)因此,您也可以创建“加入实体”&#39;预先保存重构。

答案 1 :(得分:0)

是的,你只需要...如果你从代码创建数据库,你会看到三个表...课程,用户和Course_User女巫的ID为Couse和用户

答案 2 :(得分:0)

是的,这就足够了。看一下例子 http://en.wikibooks.org/wiki/Java_Persistence/ManyToMany