简体   繁体   中英

Error in fetching table through JpaRepository

I am trying to fetch data from a table in MySQL using JpaRepository. I am geeting an error by running code like -

Error creating bean with name 'chassiscontroller': Unsatisfied dependency expressed through field 'service': Error creating bean with name 'chassisserviceimpl': Unsatisfied dependency expressed through field 'dao': Error creating bean with name 'chassisdao' defined in com.ChassisInfo.chassis.dao.chassisdao defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Not a managed type: class com.ChassisInfo.model.chassismodel.

Controller

package com.ChassisInfo.chassis.controller;

import java.util.List;

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

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RestController;

import com.ChassisInfo.chassis.model.ChassisModel;
import com.ChassisInfo.chassis.service.ChassisService;

@RestController
public class ChassisController {
    
    @Autowired
    private ChassisService service;
    
    @GetMapping("/chnum")
    public List<ChassisModel> getchassisnumberinfo(){
        
        return service.getAll();
    
    }

}

Service-

package com.ChassisInfo.chassis.service;

import java.util.List;

import com.ChassisInfo.chassis.model.ChassisModel;

public interface ChassisService{

    

    List<ChassisModel> getAll();
    

}

ServiceImpl-

package com.ChassisInfo.chassis.service;

import java.util.List;

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

import com.ChassisInfo.chassis.dao.ChassisDao;
import com.ChassisInfo.chassis.model.ChassisModel;



@Service
@lombok.AllArgsConstructor
@lombok.NoArgsConstructor
public class ChassisServiceimpl implements ChassisService {
    
    @Autowired
    private ChassisDao dao;

    @Override
    public List<ChassisModel> getAll() {
        // TODO Auto-generated method stub
        return dao.findAll();
    }

    

Dao-

package com.ChassisInfo.chassis.dao;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.stereotype.Repository;

import com.ChassisInfo.chassis.model.ChassisModel;

@Repository
@EnableJpaRepositories
public interface ChassisDao extends JpaRepository<ChassisModel,String> {
   
   @Query(value = "Select * from chassis_master" ,nativeQuery  = true)
    List<ChassisModel> findAll();
}

Model-

package com.ChassisInfo.model;

public class chassismodel {
    private String vin;
    private String active;
    private String chassisNumber;
    private String chassisSeries;
    private String statusChangedTime;
    private String tag;
    private String truckid;
    private String id;
    private String chassis_number;
    private String chassis_series;
    private String status_changed_time;
    private String truck_id;
    
    public String getVin() {
        return vin;
    }

    public void setVin(String vin) {
        this.vin = vin;
    }

    public String getActive() {
        return active;
    }

    public void setActive(String active) {
        this.active = active;
    }

    public String getChassisSeries() {
        return chassisSeries;
    }

    public void setChassisSeries(String chassisSeries) {
        this.chassisSeries = chassisSeries;
    }

    public String getStatusChangedTime() {
        return statusChangedTime;
    }

    public void setStatusChangedTime(String statusChangedTime) {
        this.statusChangedTime = statusChangedTime;
    }

    public String getTag() {
        return tag;
    }

    public void setTag(String tag) {
        this.tag = tag;
    }

    public String getTruckid() {
        return truckid;
    }

    public void setTruckid(String truckid) {
        this.truckid = truckid;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getChassis_number() {
        return chassis_number;
    }

    public void setChassis_number(String chassis_number) {
        this.chassis_number = chassis_number;
    }

    public String getChassis_series() {
        return chassis_series;
    }

    public void setChassis_series(String chassis_series) {
        this.chassis_series = chassis_series;
    }

    public String getStatus_changed_time() {
        return status_changed_time;
    }

    public void setStatus_changed_time(String status_changed_time) {
        this.status_changed_time = status_changed_time;
    }

    public String getTruck_id() {
        return truck_id;
    }

    public void setTruck_id(String truck_id) {
        this.truck_id = truck_id;
    }

    public String getChassisNumber() {
        return chassisNumber;
    }

    public void setChassisNumber(String chassisNumber) {
        this.chassisNumber = chassisNumber;
    }

}

ChassisApplication-

package com.ChassisInfo.chassis;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;

import com.ChassisInfo.chassis.controller.ChassisController;



@SpringBootApplication
@EnableJpaRepositories
public class ChassisApplication {

    public static void main(String[] args) {
        ApplicationContext context = SpringApplication.run(ChassisApplication.class, args);
        ChassisController chassisController = context.getBean(ChassisController.class);
        chassisController.getchassisnumberinfo();
    }

}

Try to use @RequiredArgsConstructor (lombok) in chassisserviceimpl , since dao field is not accessible for autowiring. Also add final for the field:

private final chassisdao dao;

This is probably because you are missing the @EnableJpaRepositories(basePackages = "your.package.name") in you @SpringBootApplication

This is the Annotation to enable JPA repositories. Will scan the package of the annotated configuration class for Spring Data repositories by default.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM