我的存储库代码中联接表查询中的 Spring Boot 问题

问题描述 投票:0回答:1

在 Spring Boot 中使用 @Query 时出现依赖关系不满足的错误

在我的存储库中,我添加了查询来连接表,但在运行时出现错误

ERROR:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'empcontroller': Unsatisfied dependency expressed through field 'emprepo'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'employeeRepository' defined in com.emp.employeeMangement.api.Repository.EmployeeRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is org.springframework.data.repository.query.QueryCreationException: Could not create query for public abstract java.util.List com.emp.employeeMangement.api.Repository.EmployeeRepository.getJoinInformation(); Reason: Validation failed for query for method public abstract java.util.List com.emp.employeeMangement.api.Repository.EmployeeRepository.getJoinInformation()!; nested exception is java.lang.IllegalArgumentException: Validation failed for query for method public abstract java.util.List com.emp.employeeMangement.api.Repository.EmployeeRepository.getJoinInformation()!

我的代码:

package com.emp.employeeMangement.api.Repository;

import com.emp.employeeMangement.api.DTO.ResponseDTO;
import com.emp.employeeMangement.api.Model.Employee;
import org.springframework.context.annotation.Bean;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface EmployeeRepository extends JpaRepository<Employee,Long> {





@Query(value = "SELECT new com.emp.employeeMangement.api.DTO.ResponseDTO(e.empName,e.gender,e.email,e.empCode,a.noOfPresent,a.noOfAbsent) from Employee e JOIN e.Attendence a")
    public List<ResponseDTO> getJoinInformation();

}

我的控制器代码:

package com.emp.employeeMangement.api.Controller;

import com.emp.employeeMangement.api.DTO.RequestDTO;
import com.emp.employeeMangement.api.DTO.ResponseDTO;
import com.emp.employeeMangement.api.Exception.ResourceNotFoundException;
import com.emp.employeeMangement.api.Model.Employee;
import com.emp.employeeMangement.api.Repository.AttendenceRepository;
import com.emp.employeeMangement.api.Repository.EmployeeRepository;
import com.emp.employeeMangement.api.Repository.SalaryRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
public class Empcontroller {

    @Autowired
    private EmployeeRepository emprepo;
    @Autowired
    private AttendenceRepository attrepo;
    @Autowired
    private SalaryRepository salRepo;

    @PostMapping("/saveEmployee")
    public Employee saveEmployee(@RequestBody RequestDTO dto){
        return emprepo.save(dto.getEmployee());
    }

    @GetMapping("/findAllEmp")
    public List<Employee> findAllEmp(){
        return emprepo.findAll();
    }

    @GetMapping("/getInfo")
    public List<ResponseDTO> getJoinInformation(){
        return emprepo.getJoinInformation();
    }

我的回应:

package com.emp.employeeMangement.api.DTO;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class ResponseDTO {
    private String empName;
    private String email;
    private String gender;
    private int empCode;
    private int noOfPresent;
    private int noOfAbsent;
    private int salAmount;

}
java spring spring-boot
1个回答
0
投票

Spring Data 告诉你查询无效。快速查看后,您似乎缺少构造函数中的字段

salAmount

© www.soinside.com 2019 - 2024. All rights reserved.