【问题标题】:Save Method not workin with the repository保存方法不适用于存储库
【发布时间】:2022-01-28 19:39:15
【问题描述】:

我的服务类中有一个方法

public Optional<Product> autenticarUsuario(Optional<Product> product) {

        Optional<Product> status = repository.findById(product.get().getId());
        
        if(status.isPresent()) {
            if(product.get().getType() == 1) {
                return Optional.of(repository.save(product));
            
            } else {
                return Optional.empty();
                
            }

如果字符串为“1”,我需要返回一个 ok 来保存,但如果不是,则不返回任何内容。 这是我的仓库

@Repository
public interface ProductRepository extends JpaRepository<Product, Long> {
    public List<Product> findAllByNameContainingIgnoreCase(String name);
    public Optional<Product> findById(long id);
    
}

程序给我的错误是: “CrudRepository 类型中的方法 save(S) 不适用于参数(可选)”

【问题讨论】:

  • 欢迎。您应该阅读How to Ask 并选择tour
  • 对不起,你能说一下我的问题缺少什么吗?我已经阅读了如何提问
  • 我没有说(好吧,也许有一个假设)有什么问题,只是作为一个新的堆栈溢出,它会很好。我不知道你为什么会收到反对票。

标签: java spring-boot hibernate rest jpa


【解决方案1】:

我认为您需要传递 Product 类型的参数而不是 Optional。 repository.save(product.get()) 也正如 Saad Zimat 指出的那样,您应该在 if 语句中包含 product.isPresent() 检查以确保有要保存的实体。

【讨论】:

  • 并将 product.isPresent() 添加到 if 语句中
  • 很好,我会编辑我的答案。
  • 感谢您的回答,它解决了我的服务类问题,但是当我尝试在类型中创建错误“方法 autenticarUsuario(Optional)”时,控制器弹出了另一个错误ProductService is not applicable for the arguments (Product)”出现,我的代码是这样的@PutMapping ("/status") public ResponseEntity&lt;ProductStatus&gt; putProductStatus(@Valid @RequestBody Product product){ return productService.autenticarUsuario(product) .map(resposta -&gt; ResponseEntity.ok(repository2.save(productStatus))) .orElse(ResponseEntity.notFound().build()); }
  • 您的代码当前的编写方式,您需要将 Optional 传递给您的服务。那将是 return productService.autenticarUsuario(Optional.of(product)).map(resposta -> ResponseEntity.ok(repository2.save(productStatus))) .orElse(ResponseEntity.notFound().build());但是,您可以将服务方法更改为采用 Product 参数而不是 Optional ,除非这违反了非功能性要求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-07
  • 2018-07-26
  • 2022-06-22
  • 2021-08-11
  • 2015-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多