在我的应用程序中,我有以下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_coupon
和student_receipt
。
我试图删除整个数据库并重新创建所有表,但我不知道为什么从未创建上述2个表。其他连接表(student_sessions
和student_course
)总是正确创建。
如果你能给我一个建议,我将非常感激。
致以最诚挚的问候,
答案 0 :(得分:1)
对于你所说的我猜你与其他两个实体(优惠券和收据)有多对多的关系,但你将它们标记为“一对多”的关系,所以永远不会成为一个连接table,所以你必须用@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;
}