当前位置: 首页 > 知识库问答 >
问题:

UnsatisfiedDependencyException,创建名称为的bean时出错

孟英叡
2023-03-14

当我尝试启动应用程序时,我得到以下消息:

“不满意的依赖关系”异常:创建名称为“产品服务”的 Bean 时出错 [C:\Users\Acasa\0 SDA\0 Proiecte 实践\attentive2细节\目标\类\com\示例\attentive2细节\服务\产品服务.class]:通过构造函数参数 0 表示的不满意的依赖关系;嵌套的异常是组织.springframework.bean.factory.Bean创建例外:创建名称为“产品存储库”的 bean 时出错,该名称为“产品存储库”,定义于 com.example.attentive2details.存储库.产品存储库中定义的@EnableJpaRepositories在 Jpa存储库注册表上声明。.EnableJpa存储库配置:初始化方法的调用失败;嵌套的异常是组织.springframework.data.存储库.query创建异常: 无法为公共抽象创建查询.util.List com.example.attentive2details.repositories.ProductRestorey.findByNameStartingWith(java.util.List)!未找到产品类型的属性名称!

这是因为我添加了一个新方法<code>List

申请代码是:

@Data
@Table
@Entity
@AllArgsConstructor
@NoArgsConstructor


public class Product {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    @Column
    private String produs;
    @Column
    private Float calories;
}



@Repository

public interface ProductRepository extends JpaRepository<Product, Integer> {

   List<Product> findByNameStartingWith(List<Product> string);
 
}


public interface ProductService {

    List<Product> findByNameStartingWith(List<Product> string);
    
}


@Service

public class ProductServiceImpl implements ProductService {

    ProductRepository productRepository;

    public ProductServiceImpl(ProductRepository productRepository) {
        this.productRepository = productRepository;
    }
    
    @Override
    public List<Product> findByNameStartingWith(List<Product> string) {
        return productRepository.findByNameStartingWith(string);
    }
}


@RequestMapping("/api")
@RestController

public class ProductController {

    private final ProductService productService;

    public ProductController(ProductService productService) {
        this.productService = productService;
    }


    @GetMapping("findProductbyNameStartingWith/produs")
    @Query("FROM Product p WHERE p.produs LIKE %:name%")
    public List<Product> findProductsbyNameStartingWith(@Param("name") String beginswith) {
        List<Product> allproducts = new ArrayList<>( productService.findAll());
        List<Product> productsListBeginWith = new ArrayList<>();
        for (Product product : allproducts) {
            if(product.getProdus().startsWith(String.valueOf(beginswith))){
                productsListBeginWith.add(product);
            }
        }
        return productService.findByNameStartingWith(productsListBeginWith);
    }
}

应用结构

共有2个答案

丁星火
2023-03-14

除了@Faramarz Afzali回答(其实是正确的),请注意以下@Query没有效果:

@RequestMapping("/api")
@RestController
public class ProductController {
    (...)

    @GetMapping("findProductbyNameStartingWith/produs")
    @Query("FROM Product p WHERE p.produs LIKE %:name%")
    public List<Product> findProductsbyNameStartingWith(@Param("name") String beginswith)
    
    (...)
}

@Query必须在存储库方法中使用,而不是在控制器或服务中使用。

赖明煦
2023-03-14

正如你的日志所提到的

com . example . attentive 2 details . repositories . product repository . findbynamestartingwith(Java . util . list)!找不到Produs类型的属性名!

您编写了findByNameStartingWith,但您的模型中没有name字段。Jpa在您的实体类中找不到此属性。您应该将name属性放在模型中或将查询更改为另一个字段,例如findByProdusStartingWithfindByCaloriesStartingWith

 类似资料:
  • 问题内容: 几天来,我一直在尝试创建Spring CRUD应用程序。我糊涂了。我无法解决此错误。 还有这个 客户端控制器 ClientServiceImpl 客户资料库 我浏览了许多类似的问题,但是没有人回答不能帮助我。 问题答案: ClientRepository应该用标记注释。使用你当前的配置,Spring将不会扫描该类并对其有所了解。在启动和连接时,找不到ClientRepository类。

  • 还有这个 UnsatisfiedDependencyException:创建名为“Client Service”的bean时出错:通过字段“Client Repository”表示的未满足的依赖关系;嵌套异常为org.springframework.beans.factory.nosuchbeandefinitionexception:没有“com.kopylov.repository.clien

  • 我正在尝试使用spring boot和JPA实现一个服务器。 模型类: 存储库: 资源:

  • 问题内容: 我将所有的XML Spring配置都转换为Java代码配置,但是由于我有一个丑陋的异常,所以我无法运行我的所有测试(它们之前都曾进行过测试): 这是我的测试课: 和我的: 我在测试课上尝试了推子,但这没用。该项目是Spring MVC项目,但是现在我仅测试服务层,所以为什么要在我的课程上放置该注释?即使有了该注释,也会出现另一个错误。那么,这里发生了什么? 问题答案: 您的配置很好,除

  • 问题内容: 我正在使用Springframework和Tomcat创建一个简单的REST服务。响应应该像{“ id”:“ 101”,“ name”:“ Ram”}之类的json中。每次运行时,出现以下错误 从这里开始,以下是我的Java代码和xml文件。 POM.xml web.xml front-controller-servlet.xml json / User.java json / Use