繁体   English   中英

通过 JpaRepository 取表出错

[英]Error in fetching table through JpaRepository

我正在尝试使用 JpaRepository 从 MySQL 中的表中获取数据。 我通过运行像这样的代码来获取错误 -

创建名称为“chassiscontroller”的 bean 时出错:通过字段“service”表示的依赖关系不满足:创建名称为“chassisserviceimpl”的 bean 时出错:通过字段“dao”表示的依赖关系不满足:创建名称为“chassisdao”的 bean 时出错,定义在 com.ChassisInfo 中。 chassis.dao.chassisdao 在 JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration 上声明的@EnableJpaRepositories 中定义:不是托管类型: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();
    
    }

}

服务-

package com.ChassisInfo.chassis.service;

import java.util.List;

import com.ChassisInfo.chassis.model.ChassisModel;

public interface ChassisService{

    

    List<ChassisModel> getAll();
    

}

服务实施-

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();
    }

    

道-

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();
}

模型-

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;
    }

}

底盘应用-

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();
    }

}

尝试在 chassisserviceimpl 中使用@RequiredArgsConstructor ( chassisserviceimpl ),因为自动装配无法访问 dao 字段。 还要为该字段添加 final:

private final chassisdao dao;

这可能是因为您在 @SpringBootApplication 中缺少 @EnableJpaRepositories(basePackages = "your.package.name")

这是启用 JPA 存储库的注释。 默认情况下,将扫描注释配置 class 的 package 为 Spring 数据存储库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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