I have a spring boot project using JPA, So I am trying to map two tables into a third one using their Id : for example I have a coupon class, I have a customer class I want to take customer id and coupon id into a third table.
I have coupons:
@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;
I have customers:
@Entity
@Table(name="customers")
public class Customer {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int cust_id;
@Size(min=1,message="is required")
private String cust_name;
@Size(min = 1, message = "is required")
private String password;
@ManyToMany(cascade = { CascadeType.ALL })
@JoinTable(
name = "customer_coupon",
joinColumns = { @JoinColumn(name = "cust_id") },
inverseJoinColumns = { @JoinColumn(name = "coup_id") }
)
private List<Coupon> coupons;
and I have the connecting table customer_coupon:
This is the error I am getting when starting the project:
Caused by: org.hibernate.DuplicateMappingException: Table [coupons] contains physical column name [coup_id] referred to by multiple physical column names: [coupId], [coup_id]
I have no idea where it comes from, would love if someone could help me !
To remove ambiguity use the @Column
annotation:
@Column(name = "coup_id")
private long coupId;
This way you can name your Java attributes as you like and don't let JPA alone for interpreting them.
Found the problem...sorry.
Had another class Company
that was referring to coupId
as well:
@OneToMany(
cascade = CascadeType.ALL,
orphanRemoval = true
)
@JoinColumn(name = "coupId")
private List<Coupon> coupons = new ArrayList();
This is from the Company
class.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With