我想从Optional对象构造一个对象,如果Optional对象不存在,则抛出异常。
@GetMapping("/{productId}")
public ProductResponse getOneProduct(@PathVariable Long productId) {
Optional<Product> foundProductOpt = productRepository.findById(productId);
return foundProductOpt.map(() ->
new ProductResponse(product, "ok").orElseThrow(() ->
new EntityNotFoundException("Product with id " +
productId + "was not found"));
}
我一直在谷歌上搜索,似乎无法以这种方式使用map方法,我想使用findById找到一个产品,然后将其放入一个foundProductOpt变量中,然后用找到的产品和一条消息示例化一个响应对象。
如何将对象从Optional传递到方法或构造函数中,或者在对象不存在时抛出异常?
2条答案
按热度按时间u5rb5r591#
您应该更改此行:
收件人:
正确地设置这样长的行的格式可以提高可读性。此外,您没有正确地使用
Optional.map
和Optional.orElseThrow
。t5fffqht2#
你不需要Map任何东西。如果不存在就抛出。下面是我的想法:
首先假设Optional是一真实的对象,一切正常。
然后使用
orElseThrow()
转换可选。