如何只修改 spring 数据 jpa 中实体的一部分?

How do I modify only part of an entity in spring data jpa?

如何在 Spring Data JPA 中只修改实体的一部分?

这是我的代码。

public void modifyDrawing(Long no, String name, Double lat, Double lon, String physicalName, String desc) {
   Drawing drawing = drawingRepository.findById(no)
       .orElseThrow(NoSuchElementException::new);

   drawing.setName(name);
   drawing.setLat(lat);
   drawing.setLon(lon);
   drawing.setPhysicalName(physicalName);
   drawing.setDesc(desc);
   drawingRepository.save(drawing);
}

此时,如果latlon为null,我想保留这些值而不改变它们。我想知道如何仅使用非空参数值更新实体值。

您应该添加一个 if 检查以确保 latitude/longitude 在调用它们的设置器之前不是 null

public void modifyDrawing(Long no, String name, Double lat, Double lon, String physicalName, String desc) {
    Drawing drawing = drawingRepository.findById(no)
        .orElseThrow(NoSuchElementException::new);

    drawing.setName(name);
    if (lat != null) {
        drawing.setLat(lat);
    }
    if (lon != null) {
        drawing.setLon(lon);
    }
    drawing.setPhysicalName(physicalName);
    drawing.setDesc(desc);
    drawingRepository.save(drawing);
}