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

标签 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 不为空并且系统可以更新数据库中的关系,则此代码可以正常工作。 如果该字段为空,它只是简单地忽略该字段。 有人可以指出可以更改哪些设置才能达到我想要的结果吗?

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

最佳答案

谢谢大家,这是一个错误的问题。它确实有效。

只是存在一些客户端问题,向其提交了错误的数据。

关于java - 使用 merge() 删除 JPA 中的多对一关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9427326/

相关文章:

spring - 为什么添加@Transactional会导致异常org.springframework.beans.factory.BeanCreationException : Error creating bean with name?

java - 解决 Hibernate/JPA EntityNotFoundException 的技巧

Java : Intercept all requests before they go to login authentication

java - 如果连接到互联网/wifi,Android 运行代码

java - 如何按照 Hibernate 教程中的描述启动 HSQLDB 服务器?

java - 序列生成器: JAVA/JPA/SPRING

java - hibernate 的问题 - 持久上下文

java - 在Java中打开带有子报表的JasperReport

java - 当我对资源使用 try 时, session 已关闭错误

java - 列表到哈希集