Java 调用CrudRepository.save方法后的Spring数据复制键值
我正在做我的个人项目,在那里我观察到春天有一种奇怪的行为Java 调用CrudRepository.save方法后的Spring数据复制键值,java,postgresql,spring-boot,spring-data-jpa,Java,Postgresql,Spring Boot,Spring Data Jpa,我正在做我的个人项目,在那里我观察到春天有一种奇怪的行为crudepository.save。其中一个字段中存在唯一约束。当我为这个字段保存一个具有重复值的新记录时,在请求处理程序方法完成之前,我没有得到任何异常。这是正常的行为吗? DB是Postgres RuleSet save=ruleSetRepository.save(convertToRuleSet(request)); fileRepository.createRuleSet(请求); 试一试{ gitRepository.comm
crudepository.save
。其中一个字段中存在唯一约束。当我为这个字段保存一个具有重复值的新记录时,在请求处理程序方法完成之前,我没有得到任何异常。这是正常的行为吗?
DB是Postgres
RuleSet save=ruleSetRepository.save(convertToRuleSet(request));
fileRepository.createRuleSet(请求);
试一试{
gitRepository.commitAddPush(request.getRuleSetName(),“添加的规则集”+request.getRuleSetName(),gitVersion);
}捕获(GenericGitException gitException){
fileRepository.deleteClassDirectory(request.getRuleSetName());
fileRepository.deleteRuleSet(request.getRuleSetName());
抛出新的CommonRuleCreateException(gitException.getMessage());
}
返回新的RuleSetResponse(save.getId()、save.getName()、save.getDescription()、save.getPackageName());
将毫无例外地调用整个方法。请添加代码以供将来参考,而不是图片 现在来问你的问题 您可能缺少的是
save
方法将在事务完成后提交给DB,通常是方法执行结束。如果只想在此时保存到DB,请使用saveAndFlush
如果需要,还可以确保repo方法使用的是新事务,而不是与调用方方法相同的事务。这样,当repo方法调用完成时,它会将事务数据保存到数据库中
我希望这对你的问题有所帮助。如果我有误解,请添加您的代码并详细解释您的错误和行为,我会尽力帮助您
祝你好运,学习愉快 谢谢,@Hülya我更新了问题