deleteById与spring jpa中的删除

hiz5n14c  于 2023-01-09  发布在  Spring
关注(0)|答案(2)|浏览(344)

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

elcex8rz

elcex8rz1#

如果提供的id不存在,方法deleteById将抛出EmptyResultDataAccessException,而如果提供的entity尚未持久化,或者由于某种原因EntityManager无法找到它,方法delete将静默返回。
此外,正如@manish在他们的注解中指出的,如果findById方法能够找到一个实体,则deleteById方法实际上在内部调用delete方法。

nom7f22z

nom7f22z2#

自**Spring-Boot 3.x及其相应版本spring-data-jpa起,
如果所提供的id不存在于要删除的数据库中,则方法deleteById
不再**抛出EmptyResultDataAccessException的运行时异常。
因此,从现在开始,deleteById(Id id)delete(T entity)之间的唯一区别在于,第一个将把id作为参数,并且尝试在数据库中定位具有要删除的id的相关实体,而第二个将直接把要删除的entity作为参数。

相关问题