Java 表中的一列由多个物理列名引用
我有一个使用JPA的spring boot项目,所以我尝试使用它们的Id将两个表映射到第三个表: 例如,我有一个优惠券类,我有一个客户类,我想将客户id和优惠券id放入第三个表中 我有优惠券:Java 表中的一列由多个物理列名引用,java,mysql,hibernate,jpa,mysql-workbench,Java,Mysql,Hibernate,Jpa,Mysql Workbench,我有一个使用JPA的spring boot项目,所以我尝试使用它们的Id将两个表映射到第三个表: 例如,我有一个优惠券类,我有一个客户类,我想将客户id和优惠券id放入第三个表中 我有优惠券: @Entity @Table(name = "coupons") public class Coupon { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long coup_id; pr
@Entity
@Table(name = "coupons")
public class Coupon {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long coup_id;
private String title;
private String start;
private String end;
private int amount;
private String type;
private String message;
private double price;
private String image;
@ManyToMany(mappedBy = "coupons")
private List<Customer> customers;
我不知道它从哪里来,如果有人能帮助我,我会很高兴的 要消除歧义,请使用
@列
注释:
@Column(name = "coup_id")
private long coupId;
通过这种方式,您可以随意命名Java属性,而不要让JPA单独解释它们。发现了问题…抱歉 还有另一类
Company
,也指coupId
:
@OneToMany(
cascade = CascadeType.ALL,
orphanRemoval = true
)
@JoinColumn(name = "coupId")
private List<Coupon> coupons = new ArrayList();
@OneToMany(
cascade=CascadeType.ALL,
孤立删除=真
)
@JoinColumn(name=“coupId”)
私有列表优惠券=新的ArrayList();
这是来自
公司的类。我遇到这个问题的另一种情况是由于区分大小写。我在两个类中提到了一个列名ownerid和ownerid。根据错误:表[]包含引用多个物理列名[ownerid]和[ownerid]的逻辑列名[ownerid]。最后我花了很多时间搜索所有者id。我也遇到了同样的问题
@Column(name=“coup\u id”)私有长coupId代码>
db表中名为coup\u id
的列
我删除了@列
注释,并开始工作!就这些
Hibernate将xX转换为x_x本身。我有一个连接表,它也是一个实体,与两个表有很多关系,所以这不完全是这个问题,但可以帮助某些人
将@MapsId(
property name)
添加到@ManyToOne
属性对我很有效。尝试重命名private long coup\u id;私人长coupId;你从哪里得到这个私人长coupId的?原创是私人长政变我试过了,还是一样,我在这篇文章之前的所有内容上都有@Column,有错误&没有错误it@RomanSterlin也许你应该在否决一个答案之前更深入地阅读OP的问题。。。从异常:由多个物理列名[coupId]引用代码>。我认为他没有在camelCase中命名数据库列,因此在代码的某些部分,他将优惠券Id变量定义为coupId
。很抱歉,您是对的,请编辑您的答案alil,以便我可以删除下一票。
@Column(name = "coup_id")
private long coupId;
@OneToMany(
cascade = CascadeType.ALL,
orphanRemoval = true
)
@JoinColumn(name = "coupId")
private List<Coupon> coupons = new ArrayList();