Arhn - архитектура программирования

org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка после добавления нового репозитория

Привет, я пытаюсь работать над проектом, прежде всего, все было гладко, когда я работал над одной моделью, как вы видите ниже.

Контроллер учащихся

package net.springboot.javaguides.controller;

import javax.validation.Valid;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import net.springboot.javaguides.entity.Student;
import net.springboot.javaguides.repository.StudentRepository;

@Controller
@RequestMapping("/students/")
public class StudentController {

    @Autowired
    private StudentRepository studentRepository;    
    
    @GetMapping("showForm")
    public String showStudentForm(Student student) {
        return "student/add-student";
    }
    
    @GetMapping("list")
    public String students(Model model) {
        model.addAttribute("students", this.studentRepository.findAll());
        return "student/index";
    }
    
    @PostMapping("add")
    public String addStudent(@Valid Student student, BindingResult result, Model model) {
        if(result.hasErrors()) {
            return "student/add-student";
        }
        
        this.studentRepository.save(student);
        return "redirect:list";
    }
    
    
    @GetMapping("edit/{id}")
    public String showUpdateForm(@PathVariable ("id") long id, Model model) {
        Student student = this.studentRepository.findById(id)
                .orElseThrow(() -> new IllegalArgumentException("Invalid student id : " + id));
        
        model.addAttribute("student", student);
        return "student/update-student";
    }
    
    @PostMapping("update/{id}")
    public String updateStudent(@PathVariable("id") long id, @Valid Student student, BindingResult result, Model model) {
        if(result.hasErrors()) {
            student.setId(id);
            return "student/update-student";
        }
        
        // update student
        studentRepository.save(student);
        
        // get all students ( with update)
        model.addAttribute("students", this.studentRepository.findAll());
        return "student/index";
    }
    
    @GetMapping("delete/{id}")
    public String deleteStudent(@PathVariable ("id") long id, Model model) {
        
        Student student = this.studentRepository.findById(id)
                .orElseThrow(() -> new IllegalArgumentException("Invalid student id : " + id));
        
        this.studentRepository.delete(student);
        model.addAttribute("students", this.studentRepository.findAll());
        return "student/index";
        
    }
}

СтудентЭнтити

package net.springboot.javaguides.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "students")
public class Student {
    
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;
    
    @Column(name = "name")
    private String name;
    
    @Column(name = "email")
    private String email;
    
    @Column(name = "phone_no")
    private long phoneNo;
    
    
    public Student() {
        super();
    }

    public Student(String name, String email) {
        super();
        this.name = name;
        this.email = email;
    }
    
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public long getPhoneNo() {
        return phoneNo;
    }
    public void setPhoneNo(long phoneNo) {
        this.phoneNo = phoneNo;
    }
}

Репозиторий учащихся

package net.springboot.javaguides.repository;

import java.util.List;

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

import net.springboot.javaguides.entity.Student;

@Repository
public interface StudentRepository extends JpaRepository<Student, Long>{
    List<Student> findByName(String name);
}

и теперь я пытаюсь добавить новую модель, как вы видите ниже, но у меня возникает ошибка:

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

package net.springboot.javaguides.controller;

import javax.validation.Valid;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import net.springboot.javaguides.entity.Course;
import net.springboot.javaguides.repository.CourseRepository;

@Controller
@RequestMapping("/courses/")
public class CourseController {

    @Autowired
    private CourseRepository courseRepository;  
    
    @GetMapping("showForm")
    public String showCourseForm(Course course) {
        return "add-course";
    }
    
    @GetMapping("list")
    public String courses(Model model) {
        model.addAttribute("courses", this.courseRepository.findAll());
        return "index";
    }
    
    @PostMapping("add")
    public String addCourse(@Valid Course course, BindingResult result, Model model) {
        if(result.hasErrors()) {
            return "add-course";
        }
        
        this.courseRepository.save(course);
        return "redirect:list";
    }
    
    
    @GetMapping("edit/{id}")
    public String showUpdateForm(@PathVariable ("id") long id, Model model) {
        Course course = this.courseRepository.findById(id)
                .orElseThrow(() -> new IllegalArgumentException("Invalid course id : " + id));
        
        model.addAttribute("course", course);
        return "update-course";
    }
    
    @PostMapping("update/{id}")
    public String updateCourse(@PathVariable("id") long id, @Valid Course course, BindingResult result, Model model) {
        if(result.hasErrors()) {
            course.setId(id);
            return "update-course";
        }
        
        // update course
        courseRepository.save(course);
        
        // get all courses ( with update)
        model.addAttribute("courses", this.courseRepository.findAll());
        return "index";
    }
    
    @GetMapping("delete/{id}")
    public String deleteCourse(@PathVariable ("id") long id, Model model) {
        
        Course course = this.courseRepository.findById(id)
                .orElseThrow(() -> new IllegalArgumentException("Invalid course id : " + id));
        
        this.courseRepository.delete(course);
        model.addAttribute("courses", this.courseRepository.findAll());
        return "index";
        
    }
}

КурсеЭнтити

package net.springboot.javaguides.entity;


import java.sql.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "Courses")
public class Course {
    
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
    
        @Column(name = "cours_name")
     private String cours_name;
     
        @Column(name = "date_debut")
     private Date date_debut;
     
        @Column(name = "date_fin")
     private Date date_fin;
     
        @Column(name = "enseignant")
     private String enseignant;
     
        @Column(name = "type_cours")
     private String type_cours;
     
        @Column(name = "filliere")
     private String filliere;
    
     public Course() {
         super();
     }
     
     public Course(String cours_name, Date date_debut, Date date_fin, String enseignant, String type_cours,
            String filliere) {
        super();
        this.cours_name = cours_name;
        this.date_debut = date_debut;
        this.date_fin = date_fin;
        this.enseignant = enseignant;
        this.type_cours = type_cours;
        this.filliere = filliere;
    }
        
     
     public Long getId() {
        return id;
    }
    public String getCours_name() {
        return cours_name;
    }

    public void setCours_name(String cours_name) {
        this.cours_name = cours_name;
    }

    public Date getDate_debut() {
        return date_debut;
    }

    public void setDate_debut(Date date_debut) {
        this.date_debut = date_debut;
    }

    public Date getDate_fin() {
        return date_fin;
    }

    public void setDate_fin(Date date_fin) {
        this.date_fin = date_fin;
    }

    public String getEnseignant() {
        return enseignant;
    }

    public void setEnseignant(String enseignant) {
        this.enseignant = enseignant;
    }

    public String getType_cours() {
        return type_cours;
    }

    public void setType_cours(String type_cours) {
        this.type_cours = type_cours;
    }

    public String getfilliere() {
        return filliere;
    }

    public void setfilliere(String filliere) {
        this.filliere = filliere;
    }

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

**

КурсРепозиторий

**

package net.springboot.javaguides.repository;

import java.util.List;

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

import net.springboot.javaguides.entity.Course;

@Repository
public interface CourseRepository extends JpaRepository<Course, Long>{
    List<Course> findByName(String cours_name);
}

но у меня эта ошибка


  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.0.RELEASE)

2020-08-27 13:44:03.876  INFO 9188 --- [  restartedMain] s.j.SpringbootThymeleafWebAppApplication : Starting SpringbootThymeleafWebAppApplication on DESKTOP-5D7IMCJ with PID 9188 (C:\Users\yassi\Desktop\workspacenew\springboot-thymeleaf-web-app-master\target\classes started by yassi in C:\Users\yassi\Desktop\workspacenew\springboot-thymeleaf-web-app-master)
2020-08-27 13:44:03.880  INFO 9188 --- [  restartedMain] s.j.SpringbootThymeleafWebAppApplication : No active profile set, falling back to default profiles: default
2020-08-27 13:44:03.941  INFO 9188 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
2020-08-27 13:44:03.941  INFO 9188 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
2020-08-27 13:44:04.881  INFO 9188 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data repositories in DEFAULT mode.
2020-08-27 13:44:04.957  INFO 9188 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 68ms. Found 2 repository interfaces.
2020-08-27 13:44:05.415  INFO 9188 --- [  restartedMain] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$97fbb782] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2020-08-27 13:44:05.849  INFO 9188 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2020-08-27 13:44:05.868  INFO 9188 --- [  restartedMain] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2020-08-27 13:44:05.868  INFO 9188 --- [  restartedMain] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/9.0.12
2020-08-27 13:44:05.876  INFO 9188 --- [  restartedMain] o.a.catalina.core.AprLifecycleListener   : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [C:\Program Files\Java\jre1.8.0_221\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Program Files/Java/jre1.8.0_221/bin/server;C:/Program Files/Java/jre1.8.0_221/bin;C:/Program Files/Java/jre1.8.0_221/lib/amd64;C:\oraclexe\app\oracle\product\11.2.0\server\bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\ManagementStudio\;C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\;C:\Program Files\Microsoft SQL Server\120\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\;C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies\;C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\;C:\Program Files\Git\cmd;C:\Program Files\nodejs\;C:\Program Files\MySQL\MySQL Server 5.1\bin;C:\Users\yassi\AppData\Local\Microsoft\WindowsApps;;C:\Users\yassi\AppData\Local\Programs\Microsoft VS Code\bin;D:\eclipse;;.]
2020-08-27 13:44:05.990  INFO 9188 --- [  restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2020-08-27 13:44:05.990  INFO 9188 --- [  restartedMain] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 2049 ms
2020-08-27 13:44:06.025  INFO 9188 --- [  restartedMain] o.s.b.w.servlet.ServletRegistrationBean  : Servlet dispatcherServlet mapped to [/]
2020-08-27 13:44:06.031  INFO 9188 --- [  restartedMain] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'characterEncodingFilter' to: [/*]
2020-08-27 13:44:06.031  INFO 9188 --- [  restartedMain] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2020-08-27 13:44:06.031  INFO 9188 --- [  restartedMain] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'formContentFilter' to: [/*]
2020-08-27 13:44:06.031  INFO 9188 --- [  restartedMain] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'requestContextFilter' to: [/*]
2020-08-27 13:44:06.203  INFO 9188 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2020-08-27 13:44:06.332  INFO 9188 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2020-08-27 13:44:06.388  INFO 9188 --- [  restartedMain] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [
    name: default
    ...]
2020-08-27 13:44:06.630  INFO 9188 --- [  restartedMain] org.hibernate.Version                    : HHH000412: Hibernate Core {5.3.7.Final}
2020-08-27 13:44:06.632  INFO 9188 --- [  restartedMain] org.hibernate.cfg.Environment            : HHH000206: hibernate.properties not found
2020-08-27 13:44:06.776  INFO 9188 --- [  restartedMain] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.0.4.Final}
2020-08-27 13:44:06.917  INFO 9188 --- [  restartedMain] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQL5InnoDBDialect
2020-08-27 13:44:07.829  INFO 9188 --- [  restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2020-08-27 13:44:07.871  INFO 9188 --- [  restartedMain] o.s.b.d.a.OptionalLiveReloadServer       : LiveReload server is running on port 35729
2020-08-27 13:44:08.146  WARN 9188 --- [  restartedMain] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'courseController': Unsatisfied dependency expressed through field 'courseRepository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'courseRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.List net.springboot.javaguides.repository.CourseRepository.findByName(java.lang.String)! No property name found for type Course!



Ответы:


1

Лог уже говорит о проблеме! .repository.CourseRepository.findByName(java.lang.String)! Не найдено имя свойства для типа Курс! В сущности вашего курса нет свойства с именем name, оно называется cours_name. Измените cours_name в объекте Course на имя или измените имя метода в CourseRepository!

27.08.2020
  • Я уже изменил имя метода в CourseRepository на cours_name, но он выдает ту же ошибку, я думаю, на нем есть кеш или что-то в этом роде. 27.08.2020
  • Кэш будет сброшен, когда вы остановите и снова запустите проект. Перезапустите его, попробуйте решение, а затем отправьте новый журнал, пожалуйста. 27.08.2020
  • теперь он работает, но выдает ошибку 404 на локальном хосте: 8080, потому что теперь я хочу указать разные маршруты для URL-адресов localhost: 8080/students и localhost: 8080/courses. в шаблонах у меня есть 2 подпапки, одна для страниц курсов html add/index/update, а другая для студентов, и я работаю с тимлистом. в основном он работал под root непосредственно перед добавлением классов курсов, я благодарен за вашу помощь. 27.08.2020
  • Это еще одна проблема. Я думаю, вы должны задать другой вопрос для этого. И, пожалуйста, примите и поддержите ответ. Спасибо ;) 27.08.2020
  • это потому что я не могу прямо сейчас! мне нужно подождать 2 дня, и сегодня мой последний срок для этого! Спасибо, в любом случае 28.08.2020
  • Хорошо, я вижу. Теперь у вас есть проблема с маршрутизацией, верно? Вы используете Thymeleaf только на интерфейсе? Можете ли вы точно объяснить, что вы делаете, поделиться журналом консоли и т. Д.? 28.08.2020
  • Проверьте stackoverflow.com/questions/52505514/ и baeldung.com/thymeleaf-in-spring-mvc Убедитесь, что ваша конфигурация, структура папок проекта и т. д. в порядке! 28.08.2020

  • 2

    Попробуйте добавить @EnableJpaRepositories(packages) поверх основного класса.

    у меня была такая же проблема, я решил добавить @EntityScan или @EnableJpaRepositories(packages)

    27.08.2020
  • выше @SpringBootApplication? Кстати, я удалил (пакеты), я сделал это, но, к сожалению, это не работает 27.08.2020
  • Да, попробуйте EntityScan или сканирование компонентов. 27.08.2020
  • я попробовал, но получил еще одну ошибку org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка создания bean-компонента с именем «courseController»: неудовлетворенная зависимость, выраженная через поле «courseRepository»; вложенным исключением является org.springframework.beans.factory.NoSuchBeanDefinitionException: нет доступного подходящего bean-компонента типа «net.springboot.javaguides.repository.CourseRepository»: ожидается как минимум 1 bean-компонент, который квалифицируется как кандидат на автоматическое подключение. Аннотации зависимостей: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 27.08.2020
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..