spring数据在crudrepository.save方法调用后复制键值

axkjgtzd  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(312)

我正在做我的个人项目,在那里我观察到Spring一个奇怪的行为 CrudRepository.save . 其中一个字段中存在唯一约束。当我为这个字段保存一个具有重复值的新记录时,在请求处理程序方法完成之前,我没有得到任何异常。这是正常行为吗?db是postgres

RuleSet save = ruleSetRepository.save(convertToRuleSet(request));
fileRepository.createRuleSet(request);
try {
   gitRepository.commitAddPush(request.getRuleSetName(), "Added rule set " + request.getRuleSetName(), gitVersion);
} catch (GenericGitException gitException) {
   fileRepository.deleteClassDirectory(request.getRuleSetName());
   fileRepository.deleteRuleSet(request.getRuleSetName());
   throw new CommonRuleCreateException(gitException.getMessage());
}
return new RuleSetResponse(save.getId(), save.getName(), save.getDescription(),save.getPackageName());

整个方法都会被毫无例外地调用。

p8h8hvxi

p8h8hvxi1#

请添加代码以供将来参考,而不是图片。
现在说到你的问题,
你可能缺少的是 save 方法将在事务完成后提交给db,通常在方法执行结束时提交。如果只想在此时保存到db,请使用 saveAndFlush .
如果需要,还可以确保repo方法使用的是新的事务,而不是其调用方方法。这样,当repo方法调用完成时,它会将事务数据保存到数据库中。
我希望这对你的问题有帮助。如果我有误解,请添加您的代码并详细解释您的错误和行为,我会尽力帮您解决。
祝你好运,学习愉快!!

相关问题