加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – JPA:为什么没有创建连接表?

发布时间:2020-12-15 02:35:42 所属栏目:Java 来源:网络整理
导读:在我的应用程序中,我有以下学生实体: @Entitypublic class Student extends Commenter implements Serializable { ... @OneToMany private ListCoupon coupons; @OneToMany private ListReceipt receipts; @ManyToMany private ListCourse courses; @ManyTo
在我的应用程序中,我有以下学生实体:

@Entity
public class Student extends Commenter implements Serializable {
    ...
    @OneToMany
    private List<Coupon>   coupons;
    @OneToMany
    private List<Receipt>  receipts;
    @ManyToMany
    private List<Course>   courses;
    @ManyToMany
    private List<Sessions> sessions;
    ...
}

当我在本地部署应用程序时,一切正常.但是,当我在服务器上部署应用程序时,未创建连接表student_coupon和student_receipt.

我试图删除整个数据库并重新创建所有表,但我不知道为什么从未创建上述2个表.其他连接表(student_sessions和student_course)总是正确创建.

如果你能给我一个建议,我将非常感激.

最好的祝福,

解决方法

对于你说什么,我猜你有许多人与其他两个实体(优惠券和收据)一对多的关系,但是你将其标记为“一对多”关系,所以永远不会是一个连接表,所以您必须使用@ManyToMany注释来注释关系字段(就像您对其他两个字段所做的那样):

@Entity
public class Student extends Commenter implements Serializable {
    @ManyToMany  //Changed this
    @JoinTable(name = "student_coupon",joinColumns = {@JoinColumn(name="studentId")},//This could be omitted 
    inverseJoinColumns = {@JoinColumn(name="couponId")} //and left defaults
    private List<Coupon>   coupons;
    @ManyToMany //and this
    @JoinTable(name = "student_receipt",inverseJoinColumns = {@JoinColumn(name="receiptId")}
    private List<Receipt>  receipts;
    @ManyToMany
    private List<Course>   courses;
    @ManyToMany
    private List<Sessions> sessions;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读