0
我的類看起來simiar這樣:(要約類)休眠持續@Embeddable對象的集合拋出異常
@Entity
public class Offer {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private int id;
@ElementCollection(fetch = FetchType.LAZY)
private Set<Product> products;
...other fields
}
及產品類:
@Embeddable
public class Product {
private String name;
private String description;
private int amount;
}
問題是,當我試圖堅持的提供實體並嘗試向提供套件添加兩個對象:
Product product = new Product("ham", "description1", 1);
Product product = new Product("cheese", "description2", 1);
我收到異常:
Caused by: org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "offer_products_pkey"
Details: Key (offer_id, amount)=(1, 1) already exists.
我不知道爲什麼我不能堅持兩個可嵌入的對象在設置時,其中一個具有相同的「金額」字段值?它以某種方式作爲ID處理?
也許我不應該創建可嵌入對象的列表,因爲它不是像這樣使用的?如果是這樣 - 那麼如果我不需要一個產品實體但想要將它保存在另一個實體(供應)中呢?
預先感謝幫助
您可能在表產品中定義了錯誤的鍵。異常很明顯 – mariusz2108
我沒有產品對象中的任何關鍵變量。如果我使用列表而不是設置它工作正常,但對於設置它不。問題似乎與Set界面的功能密切相關 - 它不能包含重複項。但爲什麼字段「金額」被視爲重複? – azalut
錯誤來自PostgreSQL。它會告訴您什麼是錯誤的:您已經爲(offer_id,amount)定義了名爲offer_products_pkey的主鍵。並且您嘗試使用相同的主鍵插入兩行。如果它不應該存在,則放棄主鍵約束。 –