亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

表中的列由多個物理列名引用

表中的列由多個物理列名引用

猛跑小豬 2023-06-21 16:40:47
我有一個使用 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;我有客戶:@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;我有連接表 customer_coupon:這是我在啟動項目時遇到的錯誤:Caused by: org.hibernate.DuplicateMappingException: Table [coupons] contains physical column name [coup_id] referred to by multiple physical column names: [coupId], [coup_id]我不知道它來自哪里,如果有人能幫助我,我會很高興!
查看完整描述

5 回答

?
慕尼黑8549860

TA貢獻1818條經驗 獲得超11個贊

要消除歧義,請使用@Column注釋:

@Column(name = "coup_id")
private long coupId;

通過這種方式,您可以隨意命名 Java 屬性,而不用讓 JPA 單獨解釋它們。


查看完整回答
反對 回復 2023-06-21
?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

發現問題了...抱歉。


還有另一個類Company也指的是coupId:


     @OneToMany(

            cascade = CascadeType.ALL,

            orphanRemoval = true

        )

 @JoinColumn(name = "coupId")

private List<Coupon> coupons = new ArrayList();

這是來自Company班級的。


查看完整回答
反對 回復 2023-06-21
?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

我有同樣的問題。

@Column(name = "coup_id") private long coupId;

和數據庫表中名為 的列coup_id

我刪除了@Column注釋,然后開始工作!就這樣。

Hibernate 將 xX 轉換為 x_x 本身。


查看完整回答
反對 回復 2023-06-21
?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

我遇到此問題的另一種情況是由于區分大小寫。我在兩個類中提到了列名稱 ownerid 和 ownerId。根據錯誤:表 [] 包含引用多個物理列名稱 [ownerid] 和 [owner_id] 的邏輯列名稱 [ownerid]。我最終花了很多時間搜索 owner_id。



查看完整回答
反對 回復 2023-06-21
?
溫溫醬

TA貢獻1752條經驗 獲得超4個贊

我有連接表,它也是實體并且與兩個表有 ManyToOne 關系,所以這不完全是這個問題,但可以幫助某人。

@MapsId(屬性名稱添加)@ManyToOne屬性對我有用。


查看完整回答
反對 回復 2023-06-21
  • 5 回答
  • 0 關注
  • 264 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號