【发布时间】:2021-09-13 23:03:59
【问题描述】:
如果使用一个参数的 Spring JPA 查询已经存在给定案例的记录,我如何检查数据库。如果它存在,它会进行更新,否则它会作为新记录插入。我尝试了一个简单的实现,但最终出现 500 服务器错误,没有记录其他错误。
已解决 [java.lang.NullPointerException] 已完成 500 INTERNAL_SERVER_ERROR
这是我迄今为止尝试过的 我的控制器
@RequestMapping(path="/updatedm",method = RequestMethod.POST)
public Boolean updateDMStatus(@RequestParam("country") String country,
@RequestParam("Id") String pId,
@RequestParam("case") String case,
@RequestParam("status") String status,
@RequestParam("updatedBy") String updatedBy){
Boolean createDm = eaDataStoreService.updateDM(country,Id,case,status,updatedBy);
return createDm;
}
我的仓库
public interface DMValidatedRepository extends CrudRepository<DMValidated, String> {
DMValidated findByCase(@Param("case") String case);
}
我的服务
public boolean updateDM(String country, String Id, String case, String status,String updatedBy) {
DMValidated document = dmValidated.findByCase(case);
if(document != null){
document.setStatus(status);
document.setUpdatedBy(updatedBy);
dmValidated.save(document);
}else{
document.getId();
document.getCase();
document.getCountry();
document.getStatus();
document.getUpdatedBy();
dmValidated.save(document);
}
return true;
}
我的模特
@Data
@ToString
@Entity
@Table(name = "DMStatus")
public class DMValidated{
@Id
@GeneratedValue
private String id;
@Column(name = "country")
private String country;
@Column(name = "Id")
private String Id;
@Column(name = "Case")
private String case;
@Column(name = "status")
private String status;
@Column(name = "updatedBy")
private String updatedBy;
public DMValidated( String country, String Id,
String case, String status, String updatedBy){
this.country = country;
this.Id=Id;
this.case = case;
this.status =status;
this.updatedBy = updatedBy;
}
我不确定这是否是正确的做法,已尝试进行研究,但我没有找到具体的东西。我怎样才能做到这一点?
【问题讨论】:
标签: java spring-boot hibernate jpa