gpt4 book ai didi

java - Optional> 用于存储库层中的空列表返回 Optional.empty 。如何更改它以返回 Optional[[]]

转载 作者:行者123 更新时间:2023-12-04 14:34:22 27 4
gpt4 key购买 nike

我有一个这样的 JPA 查询。

PersonRepository.java

public Optional<List<PersonEntity>> findByStatus(int status);

人员服务.java
System.out.println(“Optional value is ”+findByStatus(1));

输出为 Optional value is Optional.empty
现在我改变了我的查询
PersonRepository.java
public List<PersonEntity> findByStatus(int status);

人员服务.java
Optional<List<PersonEntity>> optional = Optional.of(findByStatus(1));
System.out.println("Optional value is "+optional);

输出为 Optional value is Optional[[]]
在我的数据库中,状态 1 没有值。我希望我的输出为 Optional[[]]对于第一个查询。我如何实现这一目标?

现在,我想实现这一点,因为每当 optional.get()抛出一个 NoSuchElementException ,我将使用我的异常 Controller 处理它并将其作为 404 公开给 REST 层。但是,当 List<Object>被获取,响应只是一个空列表,但 optional.get()仍然抛出 NoSuchElementException .我想避免这种情况。简而言之, optional 从 Repository 获取单个实体抛出 NoSuchElementException如果没有找到完美的值。但是对于空实体列表的 optional 获取应该返回为空而不是抛出 NoSuchElementException因为它不是 404 错误。这只是意味着该列表目前为空。

最佳答案

 public Optional<List<PersonEntity>> findByStatus(int status);

没有意义。

正确的签名是
 List<PersonEntity> findByStatus(int status);

如果没有 PersonEntity 列表将为空。

关于java - Optional<List<T>> 用于存储库层中的空列表返回 Optional.empty 。如何更改它以返回 Optional[[]],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52185052/

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