Bom dia pessoal! Seguindo as instruções do curso, ao abrir a API pelo Postman foi retornado o seguinte abaixo. Ressalto que já procurei aqui no fórum, e as soluções apresentadas já estão corretas no meu site:
{ "timestamp": "2022-04-18T11:21:53.517+00:00", "status": 500, "error": "Internal Server Error", "trace": "org.springframework.orm.jpa.JpaSystemException: No default constructor for entity: : com.ganske.forum.modelo.Topico; nested exception is org.hibernate.InstantiationException: No default constructor for entity: : com.ganske.forum.modelo.Topico\r\n\tat "message": "No default constructor for entity: : com.ganske.forum.modelo.Topico; nested exception is org.hibernate.InstantiationException: No default constructor for entity: : com.ganske.forum.modelo.Topico", "path": "/topicos"
Seguem os códigos para análise:
package com.ganske.forum.modelo;
import javax.persistence.*;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@Entity
public class Topico {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String titulo;
private String mensagem;
private LocalDateTime dataCriacao = LocalDateTime.now();
@Enumerated(EnumType.STRING)
private StatusTopico status = StatusTopico.NAO_RESPONDIDO;
@ManyToOne
private Usuario autor;
@ManyToOne
private Curso curso;
@OneToMany(mappedBy = "topico")
private List<Resposta> respostas = new ArrayList<>();
public Topico() {
}
public Topico(String titulo, String mensagem, Curso curso) {
this.titulo = titulo;
this.mensagem = mensagem;
this.curso = curso;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Topico other = (Topico) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public String getMensagem() {
return mensagem;
}
public void setMensagem(String mensagem) {
this.mensagem = mensagem;
}
public LocalDateTime getDataCriacao() {
return dataCriacao;
}
public void setDataCriacao(LocalDateTime dataCriacao) {
this.dataCriacao = dataCriacao;
}
public StatusTopico getStatus() {
return status;
}
public void setStatus(StatusTopico status) {
this.status = status;
}
public Usuario getAutor() {
return autor;
}
public void setAutor(Usuario autor) {
this.autor = autor;
}
public Curso getCurso() {
return curso;
}
public void setCurso(Curso curso) {
this.curso = curso;
}
public List<Resposta> getRespostas() {
return respostas;
}
public void setRespostas(List<Resposta> respostas) {
this.respostas = respostas;
}
}
package com.ganske.forum.controller.form;
import com.ganske.forum.modelo.Curso;
import com.ganske.forum.modelo.Topico;
import com.ganske.forum.repository.CursoRepository;
import com.ganske.forum.repository.TopicoRepository;
public class TopicoForm {
private String titulo;
private String mensagem;
private String nomeCurso;
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public String getMensagem() {
return mensagem;
}
public void setMensagem(String mensagem) {
this.mensagem = mensagem;
}
public String getNomeCurso() {
return nomeCurso;
}
public void setNomeCurso(String nomeCurso) {
this.nomeCurso = nomeCurso;
}
public Topico converter(CursoRepository cursoRepository) {
Curso curso = cursoRepository.findByNome(nomeCurso);
return new Topico(titulo, mensagem, curso);
}
}
package com.ganske.forum.repository;
import com.ganske.forum.modelo.Curso;
import org.springframework.data.jpa.repository.JpaRepository;
public interface CursoRepository extends JpaRepository<Curso, Long> {
Curso findByNome(String nome);
}
package com.ganske.forum.repository;
import com.ganske.forum.modelo.Topico;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface TopicoRepository extends JpaRepository<Topico, Long> {
List<Topico> findByCursoNome(String nomeCurso);
}
Muito obrigado desde já!