Boa tarde a todos
Estou com o seguinte problema, ao cadastrar uma pessoa usando o jsf apresenta o erro:
javax.servlet.ServletException: java.lang.IllegalArgumentException: Object: entidades.Pessoa@3492c1a4 is not a known entity type.
Debugando cheguei ao erro
javax.servlet.ServletException: javax.persistence.RollbackException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: org.postgresql.util.PSQLException: ERRO: relação “pessoa” não existe
Posição: 13
Classe Pessoa
package entidades;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
@Entity
@SequenceGenerator(name="table_id_seq", sequenceName="table_id_seq", allocationSize=1)
public class Pessoa implements Serializable{
/**
*
*/
private static final long serialVersionUID = 308431647573583250L;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="table_id_seq")
private Long idPessoa;
private String nomeFantasia;
private String razaoSocial;
public Long getIdPessoa() {
return idPessoa;
}
public void setIdPessoa(Long idPessoa) {
this.idPessoa = idPessoa;
}
public String getNomeFantasia() {
return nomeFantasia;
}
public void setNomeFantasia(String nomeFantasia) {
this.nomeFantasia = nomeFantasia;
}
public String getRazaoSocial() {
return razaoSocial;
}
public void setRazaoSocial(String razaoSocial) {
this.razaoSocial = razaoSocial;
}
}
Classe bean correspondente.
package beans;
import javax.faces.bean.ManagedBean;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import entidades.Pessoa;
import persistence.DaoImpl;
import persistence.JpaUtil;
@ManagedBean(name = "pessoaBean")
public class PessoaBean {
private Pessoa pessoa;
public PessoaBean(){
pessoa = new Pessoa();
}
public void gravar(Pessoa p) {
EntityManagerFactory fac = Persistence
.createEntityManagerFactory("SoftwareWeb");
EntityManager em = fac.createEntityManager();
em.getTransaction().begin();
em.persist(pessoa);
em.getTransaction().commit();
em.close();
}
public Pessoa getPessoa() {
return pessoa;
}
public void setPessoa(Pessoa pessoa) {
this.pessoa = pessoa;
}
}
Persistence
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="SoftwareWeb" transaction-type="RESOURCE_LOCAL">
<class>entidades.Pessoa</class>
<class>entidades.Automovel</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/vendas" />
<property name="javax.persistence.jdbc.user" value="postgres" />
<property name="javax.persistence.jdbc.password" value="123" />
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
<!-- modifica a estrutura do banco de dados conforme os beans configurados -->
<!-- modifica a estrutura do banco de dados conforme os beans configurados -->
<property name="hibernate.hbm2dll.auto" value="update" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
</properties>
</persistence-unit>
</persistence>
Tela de cadastro
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Cadastro Pessoa</title>
</h:head>
<h:body>
<h:form id="cadastro">
<h:panelGrid columns="2">
Codigo:
<h:inputText value="#{pessoaBean.pessoa.idPessoa}" disabled="true"/>
Nome Fantasia:
<h:inputText value="#{pessoaBean.pessoa.nomeFantasia}" />
Razao Social:
<h:inputText value="#{pessoaBean.pessoa.razaoSocial}" />
</h:panelGrid>
<h:commandButton action="#{pessoaBean.gravar(pessoaBean.pessoa)}" value="Salvar" />
</h:form>
</h:body>
</html>
O comando update dentro do persistence não deveria ja criar a tabela caso ela não exista? Igual ao comando create?