运维开发网

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

运维开发网 https://www.qedev.com 2020-02-27 07:51 出处:网络 作者:运维开发网整理
在我的应用程序中,我有以下学生实体: @Entity public class Student extends Commenter implements Serializable { ... @OneToMany private List<Coupon> coupons; @OneToMany private List<Receipt> receipt
在我的应用程序中,我有以下学生实体:

@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",
    joinColumns = {@JoinColumn(name="studentId")},
    inverseJoinColumns = {@JoinColumn(name="receiptId")}
    private List<Receipt>  receipts;
    @ManyToMany
    private List<Course>   courses;
    @ManyToMany
    private List<Sessions> sessions;
}
0

精彩评论

暂无评论...
验证码 换一张
取 消