jpa 2.0多对多都无法合并

时间:2012-04-10 22:43:50

标签: hibernate jpa many-to-many

我和@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;
}

非常感谢。

0 个答案:

没有答案