Not a managed type: class com.example.demo.dto.Person

Столкнулся с такой проблемой.

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'personRepository' defined in com.example.demo.repository.PersonRepository defined in @EnableJpaRepositories declared on DemoApplication: Not a managed type: class com.example.demo.dto.Person

Я думаю, что это из за того, что он не видит сущности. Хотя они объявлены

Класс Message:

package com.example.demo.dto;

import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import java.time.LocalDateTime;

@Entity
@Table(name = "messages")
public class Message {

 @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public int id;
    public String title;
    public String text;
    public LocalDateTime time;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "person_id")
    private Person person;

    public int getId() {
        return id;
    }

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

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public LocalDateTime getTime() {
        return time;
    }

    public void setTime(LocalDateTime time) {
        this.time = time;
    }

    public Person getPerson() {
        return person;
    }

    public void setPerson(Person person) {
        this.person = person;
    }
}

Класс Person:

package com.example.demo.dto;
import javax.persistence.*;
import java.util.List;

@Entity
@Table(name = "persons")
public class Person {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public int id;
    public String firstname;
    public String surname;
    public String lastname;
    public String birthday;

    @OneToMany(mappedBy = "person", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
    private List<Message> messages;

    public int getId() {
        return id;
        }
   public void setId(int id) {
        this.id = id; 
       }
  

   public String getFirstname() {
       return firstname;
   }

   public void setFirstname(String firstname) {
       this.firstname = firstname;
   }

   public String getSurname() {
       return surname;
   }

   public void setSurname(String surname) {
       this.surname = surname;
   }

   public String getLastname() {
       return lastname;
   }

   public void setLastname(String lastname) {
       this.lastname = lastname;
   }

   public String getBirthday() {
       return birthday;
   }

   public void setBirthday(String birthday) {
       this.birthday = birthday;
   }

    public Person() {}

    public Person(int id, String firstname, String surname, String lastname, String birthday) {
        this.id = id;
        this.firstname = firstname;
        this.surname = surname;
        this.lastname = lastname;
        this.birthday = birthday;
    }

    public List<Message> getMessages() {
        return messages;
    }

    public void setMessages(List<Message> messages) {
        this.messages = messages;
    }  
}

Класс MessageRepository:

package com.example.demo.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import com.example.demo.dto.Message;
import org.springframework.stereotype.Repository;

@Repository
public interface MessageRepository extends JpaRepository<Message, Integer> { 

}

Класс PersonRepository

package com.example.demo.repository;

import org.springframework.stereotype.Repository;
import com.example.demo.dto.Person;
import org.springframework.data.jpa.repository.JpaRepository;

@Repository
public interface PersonRepository extends JpaRepository<Person, Integer> {

 }

Класс MessageService:

package com.example.demo.service;

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

import com.example.demo.repository.PersonRepository;
import com.example.demo.repository.MessageRepository;
import com.example.demo.dto.Person;
import com.example.demo.dto.Message;


import java.util.List;
import java.util.Optional;

@Service
public class MessageService {

    @Autowired
    private PersonRepository personRepository;
    @Autowired
    private MessageRepository messageRepository;


    public List<Message> getAllMessagesForPerson(int p_id) {
        Optional<Person> person = personRepository.findById(p_id);
        return person.isPresent() ? person.get().getMessages() : null; 
    }

    public Message getMessageByIdForPerson(int p_id, int m_id) {
        Optional<Person> person = personRepository.findById(p_id);

        if (person.isPresent()) {
          return person.get().getMessages().stream()
              .filter(message -> message.getId() == m_id)
              .findFirst()
              .orElse(null); 
      }
      return null; 
    }


    public Message addMessageToPerson(int p_id, Message message) {
        Optional<Person> person = personRepository.findById(p_id);

        if (person.isEmpty()) {
            throw new PersonNotFoundException("Person not found");
        }

        message.setPerson(person.get());
        return messageRepository.save(message);
    }

    public void deleteMessageFromPerson(int p_id, int m_id) {
        Optional<Person> person = personRepository.findById(p_id);
        if(person.isPresent()){
          Message message = getMessageByIdForPerson(p_id,m_id);
          if (message != null){
              messageRepository.delete(message);
          }
        }
    }

}

class PersonNotFoundException extends RuntimeException {
    public PersonNotFoundException(String message) {
        super(message);
    }
}

Класс PersonService:

package com.example.demo.service;

import com.example.demo.repository.PersonRepository;
import com.example.demo.dto.Person;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;


@Service
public class PersonService {

    @Autowired
    private PersonRepository personRepository;


    public Iterable<Person> getAllPersons() {
        return personRepository.findAll();
    }

    public Person getPersonById(int id) {
        return personRepository.findById(id).orElse(null);
    }

    public Person addPerson(Person person) {
        return personRepository.save(person);
    }
}

Класс MessageController:

package com.example.demo.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import com.example.demo.service.MessageService;

@RestController
@RequestMapping("/person/{p_id}/message")
public class MessageController {
    @Autowired
    private MessageService messageService;
}

Класс PersonController:

package com.example.demo.controller;

import com.example.demo.service.PersonService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/person")
public class PersonController {

    @Autowired
    private PersonService personService;

}

Класс DemoApplication

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;



@SpringBootApplication



@EnableJpaRepositories("com.example.demo.*")
@ComponentScan(basePackages = { "com.example.demo.*" })
@EntityScan("com.example.demo.dto")    
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

Второй день уже не могу разобраться с этой проблемой. Можете пожалуйста подсказать как решить данную проблему? Заранее благодарен


Ответы (0 шт):