gpt4 book ai didi

java - 为什么 Spring 数据(JPA)的删除方法没有返回值?

转载 作者:行者123 更新时间:2023-12-01 14:17:15 25 4
gpt4 key购买 nike

我在服务层中使用了Spring Data JPA的delete方法,但我想知道为什么deleteById方法和delete方法都没有任何返回值。

如果我们仔细检查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));
}

就个人而言,我认为在这种情况下返回 Boolean值可能是一种适当的方法,因为 Controller 层将知道删除状态,并且可以为 View 层提供更加可靠的警报消息。

最佳答案

Spring Data JPA通过他们的思考方式设计了一些内置方法,并为我们提供了使用其他方式的选择。
您可以使用Spring Data JPA支持的派生删除查询轻松地获取已删除的记录及其计数。 Ref

@Repository
public interface FruitRepository extends JpaRepository<Fruit, Long> {
Fruit deleteById(Long id); // To get deleted record
Long deleteById(Long id); // To get deleted record count
}

关于java - 为什么 Spring 数据(JPA)的删除方法没有返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61060324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com