【问题标题】:JPA Many to many association entityJPA 多对多关联实体
【发布时间】:2015-02-26 20:48:21
【问题描述】:

我正在使用 JPA ORM 开发带有嵌入式数据库的 Java EE 项目。我的问题是……

当我在两个实体中创建@ManyToMany 字段时,我也必须创建关联实体,否则它会为我做容器?

课程实体sn-p

        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;
    ...

用户实体sn-p

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;
...

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

【问题讨论】:

  • 我对 JPA 的(不是那么)旧记忆说是的,这就是你需要的一切,但不确定;)

标签: java hibernate jakarta-ee jpa orm


【解决方案1】:

这可行,但请看这里:

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

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

【讨论】:

  • 感谢您回答我!
【解决方案2】:

是的,这就是您所需要的...如果您从代码创建数据库,您将看到三个表... Course、User 和 Course_User 女巫拥有 Couse 和 User 的 ID

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2021-05-25
      • 2013-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多