Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 表中的一列由多个物理列名引用_Java_Mysql_Hibernate_Jpa_Mysql Workbench - Fatal编程技术网

Java 表中的一列由多个物理列名引用

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

我有一个使用JPA的spring boot项目,所以我尝试使用它们的Id将两个表映射到第三个表: 例如,我有一个优惠券类,我有一个客户类,我想将客户id和优惠券id放入第三个表中

我有优惠券:

@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();