gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 03:42:17 24 4
gpt4 key购买 nike

在我的应用程序中,我有以下 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)始终会正确创建。

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

最好的问候,

最佳答案

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

关于java - JPA:为什么没有创建连接表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11477060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com