4

在我的应用程序中,我有以下Student实体:

@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_couponstudent_receipt没有创建连接表。

我试图删除整个数据库并重新创建所有表,但我不知道为什么从未创建上述 2 个表。不过,其他连接表 (student_sessionsstudent_course) 始终是正确创建的。

如果您能给我一个建议,我将不胜感激。

此致,

4

1 回答 1

1

对于您所说的,我猜您与其他两个实体(优惠券和收据)有多对多关系,但是您将它们标记为“一对多”关系,因此永远不会有连接表,所以您必须使用 @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;
}
于 2012-08-10T00:15:42.187 回答