春季 jpa 中的 deleteById 与删除

Ter*_*han 5 spring-data-jpa

我对 spring-data 中的 deleteById 和 delete 方法有疑问。这些方法有什么区别?我什么时候应该使用 delete/deleteById?我在谷歌上搜索了一天,但我没有答案

小智 13

如果提供的内容不存在,该方法deleteById将抛出一个异常,而如果提供的内容尚未持久化,或者由于任何原因无法被 找到,该方法将默默返回。EmptyResultDataAccessExceptioniddeleteentityEntityManager

此外,正如 @manish 在他们的评论中指出的那样,如果该方法能够找到实体,该方法deleteById实际上会在内部调用该方法。deletefindById


Pan*_*kos 7

截至Spring-Boot 3.x和 的各自版本spring-data-jpa

如果要删除的数据库中不存在提供的内容,该方法deleteById不再抛出运行时异常。EmptyResultDataAccessExceptionid

因此,从现在开始,deleteById(Id id)和之间的唯一区别delete(T entity)是,第一个将作为参数id并尝试在数据库中定位id要删除的相关实体,而第二个将直接将要entity删除的实体作为参数。