Spring Data Не удалось создать запрос для метода - PullRequest
0 голосов
/ 16 апреля 2020

Ошибка:

org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка при создании bean-компонента с именем appController: неудовлетворенная зависимость, выраженная через поле 'service'; вложенное исключение - org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка создания бина с именем 'jenkinsService': неудовлетворенная зависимость, выраженная через поле 'repo'; вложенное исключение: org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'jenkinsRepo': сбой вызова метода init; вложенное исключение: java .lang.IllegalArgumentException: не удалось создать запрос для метода publi c abstract java .util.List com.example.crud.JenkinsRepo.findByrun_id (java .lang.String)! Не найден запуск свойства для типа Jenkins!

Это класс Jenkins для определения сущности таблицы:

package com.example.crud;

import javax.persistence.*;

@Entity
@Table(name="test_case_failure")
public class Jenkins {

    @Id
    @Column(name = "failure_id")
    private int failure_id;

    @Column(name="test_case_name")
    private String test_case_name;
    @Column(name="expected_value")
    private String expected_value;
    @Column(name="error_name")
    private String error_name;
    @Column(name="auto_error_type")
    private String auto_error_type;
    @Column(name="run_id")
    private String run_id;

    public Jenkins() {
    }

    public int getFailure_id() {
        return failure_id;
    }

    public void setFailure_id(int failure_id) {
        this.failure_id = failure_id;
    }

    public String getTest_case_name() {
        return test_case_name;
    }

    public void setTest_case_name(String test_case_name) {
        this.test_case_name = test_case_name;
    }

    public String getExpected_value() {
        return expected_value;
    }

    public void setExpected_value(String expected_value) {
        this.expected_value = expected_value;
    }

    public String getError_name() {
        return error_name;
    }

    public void setError_name(String error_name) {
        this.error_name = error_name;
    }

    public String getAuto_error_type() {
        return auto_error_type;
    }

    public void setAuto_error_type(String auto_error_type) {
        this.auto_error_type = auto_error_type;
    }

    public String getRun_id() {
        return run_id;
    }

    public void setRun_id(String run_id) {
        this.run_id = run_id;
    }

}

Класс контроллера:

package com.example.crud;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

@Controller
public class appController {

    @Autowired
    private jenkinsService service;

    @RequestMapping("/")
    public String viewHomePage(Model model) {
        List<Jenkins> listProducts = service.getbyrun_id();
        model.addAttribute("TestsReports", listProducts);

        return "index";
    }

}

Класс репозитория :

package com.example.crud;

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

import java.util.List;

@Repository
public interface JenkinsRepo extends JpaRepository<Jenkins, Integer> {
    List<Jenkins> findByrun_id(String run_id);
}

Класс обслуживания:

package com.example.crud;

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

import java.util.List;

@Service
public class jenkinsService {

    @Autowired
    private JenkinsRepo repo;

    List<Jenkins> getbyrun_id() {
        return repo.findByrun_id("test");
    }

}

1 Ответ

3 голосов
/ 16 апреля 2020

spring-data использует подчеркивание в качестве разделителя для вложенных полей, когда пытается вставить запрос из сигнатуры метода. Итак, если вы сделаете findByrun_id, Spring будет искать вложенное поле Jenkins.run.id. Вам следует изменить атрибут run_id на runId, а затем переименовать метод на findByrunId или findByRunId

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...