【问题标题】:OneToOne JPA does not save nullOneToOne JPA 不保存 null
【发布时间】:2019-04-29 13:35:47
【问题描述】:

我有一个基本的 SpringBoot 2.1.0.RELEASE 应用程序。使用 Spring Initializer、JPA、嵌入式 Tomcat、Thymeleaf 模板引擎,并打包为可执行 JAR 文件。

我有这个对象:

@Entity
public class TdkDevice extends Device {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;


    public TdkDevice() {
        super();
    }

    public TdkDevice(String deviceKey, String devicePAC) {
        super(deviceKey, devicePAC);
    }



    @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JsonIgnore
    private User authorizedTeam;

}

在控制器中, 我这样做

currentDevice.setAuthorizedTeam(null);
deviceService.save(currentDevice);  

但在数据库中仍然存在旧值

【问题讨论】:

  • 能否提供服务实现?
  • 控制器和服务的完整源代码会很有帮助。顺便说一句-您确定对实体所做的更改最终会在数据库中传播吗?正如我假设你所做的那样,在存储库上使用 save 方法并不能保证这一点。没有完整的源代码,很难判断出了什么问题。

标签: java spring-mvc jpa spring-data-jpa spring-data


【解决方案1】:

根据您的休眠配置,JPA 存储库上的save 方法可能不会立即将您的更改写入数据库,并且您必须在完成“保存”实体后刷新它们。您也可以使用saveAndFlush 方法,该方法将强制将对象中的更改立即写入数据库。

Hibernate documentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 2022-12-17
    • 2020-11-21
    相关资源
    最近更新 更多