Mar*_*hya 2 java optional spring-data-jpa spring-boot
我有一个这样的 JPA 查询。
PersonRepository.java
public Optional<List<PersonEntity>> findByStatus(int status);
Run Code Online (Sandbox Code Playgroud)
人员服务.java
System.out.println(“Optional value is ”+findByStatus(1));
Run Code Online (Sandbox Code Playgroud)
输出是 Optional value is Optional.empty
现在我改变了我的查询 PersonRepository.java
public List<PersonEntity> findByStatus(int status);
Run Code Online (Sandbox Code Playgroud)
人员服务.java
Optional<List<PersonEntity>> optional = Optional.of(findByStatus(1));
System.out.println("Optional value is "+optional);
Run Code Online (Sandbox Code Playgroud)
输出是 Optional value is Optional[[]]
在我的数据库中,状态 1 没有值。我想要我的输出作为Optional[[]]第一个查询。我如何实现这一目标?
现在,我想实现这一点,因为每当optional.get()抛出 a 时NoSuchElementException,我将使用我的异常控制器处理它并将其作为 404 公开给 REST 层。但是,当List<Object>获取a 时,响应只是一个空 List,但optional.get()仍然抛出 a NoSuchElementException。我想避免这种情况。简而言之,NoSuchElementException如果没有找到值,那么从 Repository 中可选的 fetch 就会抛出,这是完美的。但是对于空实体列表的可选提取,应该返回为空而不是抛出,NoSuchElementException因为它不是 404 错误。这只是意味着该列表目前为空。
Sim*_*lli 11
public Optional<List<PersonEntity>> findByStatus(int status);
Run Code Online (Sandbox Code Playgroud)
没有意义。
正确的签名是
List<PersonEntity> findByStatus(int status);
Run Code Online (Sandbox Code Playgroud)
如果没有 PersonEntity 列表将为空。
| 归档时间: |
|
| 查看次数: |
5872 次 |
| 最近记录: |