java - 不满意的依赖异常 : Error creating bean with name 'procjectController' : Unsatisfied dependency expressed through field

标签 java hibernate spring-boot spring-mvc spring-data-jpa

我正在使用 spring JAP 构建简单的多对一关系。我收到 UnsatisfiedDependencyException 错误,bean 名称未满足通过字段表达的依赖关系

UnsatisfiedDependencyException: Error creating bean with name 'procjectController': Unsatisfied

这是我的文件。

project.java

package com.ganesh.dto;

import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

import com.fasterxml.jackson.annotation.JsonIgnore;


@Entity
public class Project {

    @Id
    private int projectId;
    private String projectName;

    //Relation establish
    @ManyToOne(
            fetch = FetchType.LAZY,
            optional = false
            )
    @JoinColumn(
            name = "employee_id",
            nullable = false
            )
    @JsonIgnore
    private Employee employee;


    public Project() {

    }

    public Project(int projectId, String projectName, int eId) {
        super();
        this.projectId = projectId;
        this.projectName = projectName;
        //Adding employee 
        this.employee = new Employee(eId,"","");
    }

    public int getProjectId() {
        return projectId;
    }

    public void setProjectId(int projectId) {
        this.projectId = projectId;
    }

    public String getProjectName() {
        return projectName;
    }

    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }

    //Adding getter and setters Employee reference
        public Employee getEmployee() {
            return employee;
        }

        public void setEmployee(Employee employee) {
            this.employee = employee;
        }

}

ProjectDao.java

package com.ganesh.dao;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import com.ganesh.dto.Project;

@Repository
public interface ProjectDao extends JpaRepository<Project, Integer> {

    List<Project> findEmployeeById(int eId);

}

ImpProjectService.java

package com.ganesh.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.ganesh.dao.*;
import com.ganesh.dto.Project;

@Service
public class ImpProjectService implements ProjectService {

    @Autowired
    private ProjectDao projectDao;


    @Override
    public List<Project> getProjectList(int eId) {
        System.out.println("in Dao class employee id"+ eId);
        return projectDao.findEmployeeById(eId);
    }

    @Override
    public Project getProjectById(int id) {
        return projectDao.getOne(id);
    }

    @Override
    public void addProject(Project project) {
        projectDao.save(project);

    }

    @Override
    public void updateProject(Project project) {
        projectDao.save(project);

    }

    @Override
    public void deleteProjectById(int id) {
        projectDao.deleteById(id);
    }

    @Override
    public List<Project> getAllProject() {
        return projectDao.findAll();
    }

}

ProjectController.java

package com.ganesh.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.ganesh.dto.*;
import com.ganesh.service.*;

@RestController
public class ProcjectController {

    @Autowired
    private ImpProjectService projectService;


    @RequestMapping("/projects") 
    public List<Project> getProjectList(){
       return projectService.getAllProject(); 
    }


    @RequestMapping("/employees/{eId}/projects")
    public List<Project> getAllProjects(@PathVariable int eId){
        System.out.println("In Project Controller");
        List<Project> projList = projectService.getProjectList(eId);
        System.out.println(projList);
        return projList;
    }

    @RequestMapping("/employees/{eId}/projects/{id}")
    public Project getProjectById(@PathVariable int id) {
        return projectService.getProjectById(id);
    }

    @RequestMapping(method = RequestMethod.POST, value="/employees/{eId}/projects")
    public void addProject(@RequestBody Project project, @PathVariable int eId) {
        project.setEmployee(new Employee(eId,"",""));
        projectService.addProject(project);
    }

    @RequestMapping(method = RequestMethod.PUT, value="/employees/{eId}/projects/{id}")
    public void updateProject(@RequestBody Project project, @PathVariable int eId) {
        project.setEmployee(new Employee(eId,"",""));
        projectService.updateProject(project);
    }

    @RequestMapping(method = RequestMethod.DELETE, value="/projects/{id}")
    public void deleteProjecstById(@PathVariable int id) {
        projectService.deleteProjectById(id);
    }
}

最佳答案

注意:此答案基于不充分的数据,因为堆栈跟踪不可用。有了正确且完整的堆栈跟踪,我们也许能够提供更精确的答案。

答案: 看起来像是您的 Dao 类中的问题。

你已经写了

@Repository
public interface ProjectDao extends JpaRepository<Project, Integer> {

    List<Project> findEmployeeById(int eId);

}

这意味着您正在创建 Project 类型的存储库并尝试以 findEmployeeById 形式触发查询,它应该是 findByEmployee,其中接受 Employee 作为参数,或者根本不应该存在。因为查询语法和模板参数不匹配。因此 Spring 将无法为其初始化查询处理程序。

如果满足您的目的,请尝试按如下方式进行更改。 @存储库 公共(public)接口(interface) ProjectDao 扩展 JpaRepository {

    List<Project> findAllByEmployee(Employee emp);

}

请检查相同并更正。如果仍然不起作用,请发布完整的堆栈跟踪,我们可以帮助您。

关于java - 不满意的依赖异常 : Error creating bean with name 'procjectController' : Unsatisfied dependency expressed through field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59289283/

相关文章:

java - 使用 ContainerRequestFilter 在 Jersey WebService 中自定义 @RolesAllowed 角色

java - Hibernate 用一个 session.save 保存许多不同的对象

java - 使用 JPA 创建多个对象

spring - 禁用嵌入式 http 服务器上的 session

java - 如何从 Google Cloud Storage 下载文件并将其返回到 Spring Controller 中

java - 如何在 Z3 (Java) 中以小数( double )形式从模型中获取实数值?

java - 简单日期格式,解析异常

java - 在hibernate查询中获取数据库名称

java - Hibernate 库和 Hibernate JPA 库的区别

java.net.SocketException : Connection reset in spring Rest template