[Java para Web com JFS e JPA] Erro ao persistir os dados do formulário (Resolvido)

Boa noite gente.

Continuando meus estudos, consegui fazer o formulário da página xhrml aparece no navegdor. Agora, quando lanço os dados nos campos e clico no botão Salvar, aparece a seguinte mensagem de erro:

java.lang.IllegalArgumentException: Object: Biblioteca.Livro@2c7158fc is not a known entity type.

Buscando ajuda em outros fóruns na internet, verifiquei que o problema poderia ser a não-declaração da classe a ser persistida no bando de dados no arquivo persistence.xml. Fiz a alteração sugerida (inserção do nome da classe por meio das tags ), mas o erro continua.

A minha classe persistence.xml está da seguinte forma:

<?xml version="1.0" encoding="UTF-8"?>
<persistence-unit name="biblioteca">
    
    <class>Biblioteca.Livro</class>

   <properties>
  
        <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/biblioteca"/>
        <property name="javax.persistence.jdbc.user" value="biblioteca"/>
        <property name="javax.persistence.jdbc.password" value="livros"/>
        <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
        
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect"/>
        <property name="hibernate.hbm2ddl.auto" value="update"/>
        <property name="hibernate.show_sql" value="true"/>
        <property name="hibernate.format_sql" value="true"/>

    </properties>
    
</persistence-unit>

E a classe a ser persistida (Livro.java) está assim:

package Biblioteca;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;

@Entity
public class Livro implements Serializable {

@Id @GeneratedValue
private int id;

private String titulo;
private String autor;
private String  espirito;
private String tradutor;
private String editora;
private int anoEdicao;
private String isbn;

public int getId() {
    return id;
}

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

public String getTitulo() {
    return titulo;
}

public void setTitulo(String titulo) {
    this.titulo = titulo;
}

public String getAutor() {
    return autor;
}

public void setAutor(String autor) {
    this.autor = autor;
}

public String getEspirito() {
    return espirito;
}

public void setEspirito(String espirito) {
    this.espirito = espirito;
}

public String getTradutor() {
    return tradutor;
}

public void setTradutor(String tradutor) {
    this.tradutor = tradutor;
}

public String getEditora() {
    return editora;
}

public void setEditora(String editora) {
    this.editora = editora;
}

public int getAnoEdicao() {
    return anoEdicao;
}

public void setAnoEdicao(int anoEdicao) {
    this.anoEdicao = anoEdicao;
}

public String getIsbn() {
    return isbn;
}

public void setIsbn(String isbn) {
    this.isbn = isbn;
}

}

Mais uma vez conto com a ajuda de vocês!

Desde já agradeço!

Abraços!

Acho que é obrigatório um construtor público sem argumentos dentro de sua classe livro. Adicione o construtor e tente executar novamente.

Olá Gracyane.

Segui sua sugestão, mas infelizmente o erro persiste. Pode ser alguma coisa no IDE que esteja mal configurada, e está gerando o problema.

Ainda estou pesquisando sobre o Github para colocar o projeto lá. Assim que o fizer, e se você ainda puder me ajudar, eu lhe mando o link.

Obrigado!

Abraços!

Como está a estrutura de pastas/arquivos do seu projeto? Está tudo sendo compilado corretamente? Quando o arquivo .war é enviado ao servidor, está indo também o persistence.xml?
Tente fazer o seguinte: remova a tag class que você colocou e adicione estas duas:

<property name="hibernate.archive.autodetection" value="class" />
<exclude-unlisted-classes>false</exclude-unlisted-classes>

Boa noite Edylle.

A estrutura do projeto é a padrão para aplicações web feitas no NetBeans. Está tudo compilando normalmente e o arquivo persistence.xml está sendo carregado no servidor. Fiz as alterações sugeridas por você e não surtiram efeito. Conitnuo pesquisando por aqui.

Mas gostaria de agradecer pela ajuda! Valeu mesmo!

Abraços!

Olá @fred_jr10 ,

Será que teria como você mostrar um print das classes criadas? Pois pelo que deu a entender, o persistence não está localizando esta classe neste pacote. E só por curiosidade, no seu MySQL existe o usuário biblioteca com a senha livros?

E será que você poderia também colocar o código da classe que cria a conexão com o banco de dados?

Desculpe, se alguma informação dessas estiver no livro, pois ainda não li o mesmo.

Olá amigos!

Consegui resolver este problema. O erro era causado pela falta da biblioteca jandex.jar no Hibernate 4.3. Entretanto caí em outro problema. Vou abrir novo tópico para ele.

Abraços!