Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Problemas na execução de uma API

Estou desenvolvendo uma API com base no seu curso, de forma muito parecida. Apenas para aprendizado. Mas estou tomando o seguinte erro:

Relatório de exceção de tipo

O processamento do pedido de mensagem falhou; a exceção aninhada é org.springframework.dao.DataAccessResourceFailureException: Não foi possível criar JPA EntityManager; a exceção aninhada é org.hibernate.AnnotationException: Nenhum identificador especificado para a entidade: com.jacqueline.livros.entidades.Autor

A classe Autor esta da seguinte forma:

@Entity public class Autor { private String nome;

public Autor() {
    super();
    // TODO Auto-generated constructor stub
}

public Autor(String nome) {
    super();
    this.nome = nome;
}

public String getNome() {
    return nome;
}

public void setNome(String nome) {
    this.nome = nome;
} 

}

E esta é a minha classe controller:

@Controller

public class LivrosController {

@ResponseBody

@RequestMapping("/livros")
public List<Livro> listarLivros()
{
    Livro livro = new Livro("EXEMPLO", new Autor("exemplo"));

    return Arrays.asList(livro, livro, livro);
}

}

Consegue me ajudar, POR FAVOR?

3 respostas

Está faltando um @Id na sua entidade, que é uma anotação obrigatória para todo @Entity.

O ID de um entidade é, na sua essência, uma chave primária ou uma chave composta da sua tabela. Se você optar pela utilização de uma chave composta, deverá utilizar outra anotação: @EmbeddedId.

Atenção que todas essas anotações são do pacote javax.persistance. É comum acabar utilizando algum framework e se confundir na hora das importações.

Ah, certo. Muito obrigada!!

Porém, inserindo a anotação "Id", muda o erro para:

processamento do pedido de mensagem falhou; a exceção aninhada é org.springframework.dao.DataAccessResourceFailureException: Não foi possível criar JPA EntityManager; a exceção aninhada é javax.persistence.PersistenceException: [PersistenceUnit: default] Incapaz de construir Hibernate SessionFactory; a exceção aninhada é org.hibernate.MappingException: Não foi possível determinar o tipo para: com.jacqueline.livros.entidades.Autor, na tabela: livro, para colunas: [org.hibernate.mapping.Column (autor)]

Mais anotações são obrigatórias?

solução!

Oi Jacqueline,

Parece que agora falta anotar o atributo Autor na classe Livro com @ManyToOne.

Acredito que sua dificuldade está sendo em relação à JPA.

Recomendo que você faça o curso de JPA aqui da Alura: https://cursos.alura.com.br/course/jpa-hibernate-persistencia-objetos

Bons estudos!