更新的答案(投反对票后)
我最初的答案(如下)实际上是错误的:我对这个问题的理解也受到官方JavaDoc中缺少的引用的影响(正如Adrian Baker在他的评论中报道的那样)。EmptyResultDataAccessException
因此,这个问题的更好解决方案可能是Yamashiro Rion提出的解决方案。
if (repository.existsById(entityId)) {
repository.deleteById(entityId);
}
或这个(没有,但可能表现更差):if
repository.findById(entityId)
.map(repository::delete)
原始(错误)答案
JavaDocs 表示,如果提供的参数 (id, entity, ) 为 null,则将抛出 an,如果实体未退出,则不会抛出 。IllegalArgumentException
Iterable<T>
如果需要避免,可以实现自定义删除方法,该方法检查:IllegalArgumentException
id != null
public void customDelete(ID id) {
if(id != null){
this.delete(id);
}
}
如果您不知道如何添加“Spring Data 存储库的自定义实现”,请查看此文档部分