使用merge()删除JPA中的多对一关系

时间:2012-02-24 08:01:52

标签: java hibernate jpa jpa-2.0 many-to-one

我有以下单向多对一映射

@Entity
public class Item implements Serializable {
    private Integer id;
    private Double amount;
        private Country origin;

    @ManyToOne(optional=true)
    @JoinColumn
    public Country getOrigin() {
        return this.origin;
    }
}

@Entity
public class Country implements Serializable{

    private String code;
    private String desc;
}

假设关系是可选的,所以我试图通过使用下面的代码将其更新为null来删除关系

Country country = null;
//item is detached
item.setOrigin(country);
em.merge(item);

但结果证明是关系没有被删除。 但是,如果country不为null并且系统可以更新DB中的关系,则此代码可以正常工作。 它只是忽略该字段,如果它是null。 有人可以指出可以改变哪些设置以达到我想要的结果吗?

P.S。请注意,我不想删除实体Country,只是删除它们之间的关系。

1 个答案:

答案 0 :(得分:0)

感谢所有这是一个错误的问题。它确实有效。

只有一些客户端问题向其提交了错误的数据。