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);
}
}
Второй день уже не могу разобраться с этой проблемой. Можете пожалуйста подсказать как решить данную проблему? Заранее благодарен