我的课程看起来与此类似:(提供课程)
@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;
}
问题是当我尝试保留 Offer 实体并尝试将两个对象添加到 Offer 的 Set 时:
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.
我不知道为什么当其中一个具有相同的“金额”字段值时,我不能在 Set 中保留两个可嵌入对象?它以某种方式被视为ID吗?
也许我不应该创建可嵌入对象的列表,因为它不是为这样使用而设计的?如果是这样 - 那么如果我不需要 Product 实体但想将其保留在另一个实体(报价)中怎么办?
提前感谢您的帮助