我和@IdClass有很多关系。
当我尝试使用“merge()”保存这么多时我得到错误: 分离的实体传递给持久化
问题似乎是两个实体都已保存在我的数据库中:商店和产品。 在DB中保存了一些给定的商店和一些给定的产品。每个商店对同一产品都有自己的价格,但它有默认价格。 我尝试用多对多的关系来解决这个问题,商店可以检查他们销售的产品,如果有的话可以给自己的价格。如果我加载商店和产品并致电shop.addProduct(product,200);然后保存它,我得到了上面的恐怖。
让我们给出一些代码示例:
@Entity
public class Shop {
@Id
public Long id;
@OneToMany(fetch = FetchType.EAGER, mappedBy="product", cascade = CascadeType.ALL)
public Set<ShopProduct> products;
public void addProduct(Product myProduct, long myPrice){
ShopProduct association = new ShopProduct();
association.setShop(this);
association.setProduct(myProduct);
association.setPrice(myPrice);
products.add(assiciation);
}
}
@Entity
public class Product {
@Id
public Long id;
@Column
public long price;
}
@Entity
@IdClass(ShopProductId.class)
public class ShopProduct {
@Id
@ManyToOne
@JoinColumn(name = "SHOP_ID")
private Shop shop;
@Id
@ManyToOne
@JoinColumn(name = "PRODUCT_ID")
private Product product;
@Column
public long price;
}
非常感谢。