gpt4 book ai didi

java - Spring Boot JPA不会使用save方法更新记录

转载 作者:行者123 更新时间:2023-12-01 10:27:15 27 4
gpt4 key购买 nike

我对 Spring Boot 和 JPA 相当陌生,正在尝试更新 mysql 数据库中的记录。在下面的 Controller 中,我能够成功地将新记录保存到数据库中并查找现有记录。但是,当我尝试更新现有记录时,什么也没有发生。 (如图所示,它不会保存并跳过该方法。)

下面是我的 Controller 。请注意,errorUpdateService.fineErrorByName 可以成功检索数据库中的现有记录。

@Autowired
private ErrorUpdateService errorUpdateService;


@RequestMapping(value="/api/UpdateError", method=RequestMethod.POST)
@ResponseBody
public String updateError(@RequestBody Error error){
try{
Error retrievedError=errorUpdateService.findErrorByName((error.getName()));
if(!retrievedError.getName().equals("NVE")){
System.out.println("Here is error: "+retrievedError.toString());
errorUpdateService.updateError(retrievedError);
return retrievedError.getName() + " has been updated";
}
}catch(NullPointerException e){
errorUpdateService.updateError(error);
return "Error Name Does not Exist. Saving " +error.getName() ;
}
return "Failed Method";
}

当代码执行到 errorUpdateService.updateError(retrievedError); 时,它不会保存到数据库并且似乎会跳过。但是,如果您发送数据库中不存在的记录,则不会出现任何问题(请参阅空指针 catch block )。

请参阅下面的 ErrorUpdateServiceImpl'

@Autowired
private ErrorRepository errorRepository;

@Override
public void updateError(Error error) {
System.out.println("Attempting to save a error: "+error.toString());
errorRepository.save(error);
}

@Override
public Error findErrorByName(String errName){

try{
Error error=errorRepository.findByErrName(errName);

return error;
}catch(NullPointerException e){
return new Error("NVE");
}
}

'

public interface ErrorRepository extends JpaRepository<Error, Long>{

Error findByErrName(String errName);
}

以下是尝试更新记录时的控制台输出示例:

Hibernate: select error0_.id as id1_0_, error0_.documentationurl as document2_0_, error0_.err_name as err_name3_0_, error0_.error_id as error_id4_0_, error0_.has_documentation as has_docu5_0_, error0_.last_incident_time as last_inc6_0_, error0_.throttle_minutes as throttle7_0_, error0_.throttle_threshold as throttle8_0_ from error error0_ where error0_.err_name=?
Here is error: Error [id=6, errorId=0, hasDocumentation=false, errName=Error0001, documentationURL=null, throttleThreshold=0, throttleMinutes=0, lastIncidentTime=null]
Attempting to save a error: Error [id=6, errorId=0, hasDocumentation=false, errName=Error0001, documentationURL=null, throttleThreshold=0, throttleMinutes=0, lastIncidentTime=null]

最佳答案

我是否遗漏了某些内容,或者您​​正在尝试使用您检索到的同一记录来更新记录?您正在使用完全相同的值更新它,所以也许这就是您没有看到任何更改的原因?

关于java - Spring Boot JPA不会使用save方法更新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35298580/

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