gpt4 book ai didi

java - Spring JPA Repository 合并而不是保存

转载 作者:行者123 更新时间:2023-11-30 06:44:13 29 4
gpt4 key购买 nike

你能帮我处理一下 JPA Repository 吗?在更新请求和使用 POST 方法期间 - 我只需要保存发送到 POST 正文中的字段。但是如果我没有将它写入正文,JPA 存储库设置为 null(DB MySQL,默认为 null)。请看图片。 enter image description here

如果我不发送博德机场代码,它在更新后变为空。但它是“UAAA”。我该如何管理它?谢谢指教!

模型类裁剪:

@Entity 
@SelectBeforeUpdate
@DynamicUpdate
@Table(name = "airports")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class Airports {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String airport;
private String code;

Controller 类剪切:

@RestController
public class AirportsController {
private AirportsRepository repository;


public AirportsController(AirportsRepository repository) {
this.repository = repository;
}

@PostMapping(value = "airports/update")
public ResponseEntity updateAirportById(@RequestBody Airports airports) {
Airports foundedById = repository.findOne(airports.getId());
foundedById.setAirport(airports.getAirport());
foundedById.setCode(airports.getCode());
repository.save(foundedById);

return new ResponseEntity(foundedById, HttpStatus.OK);
}

最佳答案

这是因为您在 Controller updateAirportById 方法中设置了值,即使它们为空。如果您没有在正文中传递“code”和“airport”的值,getAirports 方法将返回 null 并将其设置为 foundedById,然后更新它。简单的 if 条件应该可以解决这个问题

if(airports.getAirport() != null) 
foundedById.setAirport(airports.getAirport());

“代码”也是如此

关于java - Spring JPA Repository 合并而不是保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50922194/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com