我在服务层使用了Spring Data JPA
的删除方法,但是我想知道为什么deleteById
方法和delete
方法都没有返回值。
如果我们仔细检查删除方法的实现,会发现有一个if语句,当要删除的实体不存在时,它不会返回任何内容。
public void delete(T entity) {
Assert.notNull(entity, "Entity must not be null!");
if (entityInformation.isNew(entity)) {
return;
}
Class<?> type = ProxyUtils.getUserClass(entity);
T existing = (T) em.find(type, entityInformation.getId(entity));
// if the entity to be deleted doesn't exist, delete is a NOOP
if (existing == null) {
return;
}
em.remove(em.contains(entity) ? entity : em.merge(entity));
}
我个人认为,在这种情况下返回布尔值可能是一种足够的方法,因为控制器层将了解删除状态,视图层可以提供更可靠的警告消息。
Query.executeUpdate():int
,并捕获异常:) 这将可靠地返回修改/更新/删除行的计数。 - xerx593