不满意依赖项异常:创建名为"procjectController"的 Bean 时出错:通过字段表示的未满足依赖项



我正在使用弹簧JAP构建简单的ManyToOne关系。 我得到不满意依赖异常 Bean 名称错误 通过字段表示的不满意依赖关系

不满意依赖项异常:创建名为"procjectController"的 Bean 时出错:不满意

这是我的文件。

项目.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;
}
}

项目道.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);
}

英普项目服务.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();
}
}

ProcjectController.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);
}
}

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

答:看来你的道课有问题了。

你已经写了

@Repository
public interface ProjectDao extends JpaRepository<Project, Integer> {
List<Project> findEmployeeById(int eId);
}

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

如果满足您的目的,请尝试按如下方式更改它。 @Repository 公共接口 ProjectDao 扩展了 JpaRepository {

List<Project> findAllByEmployee(Employee emp);
}

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

最新更新