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

JSF e Hibernate

Srs, boa tarde!

Eu estou iniciando meu aprendizado com Hibernate e JSF. Eu criei um formulário com quatro campos simples. Eu tenho um banco de dados com nome ERP2 e criei via Hibernate uma tabela com nome Empresa.

Quando eu faço o action via formulário por algum motivo o console retorna a informação que eu não tenho a tabela erp2.empresa. Quando na verdade o nome da minha tabela deveria apenas ser empresa.

Segue o fonte, agradeço antecipadamente.

Formulário. [code]

[/code]

Classe EmpresaBean [code] @ManagedBean public class EmpresaBean {

private Empresa empresa = new Empresa();

public Empresa getEmpresa() { return empresa; }

public void gravar() { System.out.println("Gravando Empresa:" + this.empresa.getRazaoSocial());

new DAO(Empresa.class).adiciona(this.empresa); }

} [/code]

DAO [code] public class DAO {

private final Class classe;

public DAO(Class classe) { this.classe = classe; }

public void adiciona(T t) {

EntityManager em = new JPAUtil().getEntityManagerFactory(); em.getTransaction().begin();

em.persist(t);

em.getTransaction().commit(); em.close(); }

} [/code]

Hibernate [code] public class JPAUtil {

private static EntityManagerFactory manager = Persistence .createEntityManagerFactory("erp2");

public EntityManager getEntityManagerFactory() { return JPAUtil.manager.createEntityManager(); }

} [/code]

[code] @Entity public class Empresa {

@Id @GeneratedValue(strategy = GenerationType.IDENTITY) private String idEmpresa;

private String razaoSocial; private String cnpj; private String inscrEstad;

public String getIdEmpresa() { return idEmpresa; }

public void setIdEmpresa(String idEmpresa) { this.idEmpresa = idEmpresa; }

public String getRazaoSocial() { return razaoSocial; }

public void setRazaoSocial(String razaoSocial) { this.razaoSocial = razaoSocial; }

public String getCnpj() { return cnpj; }

public void setCnpj(String cnpj) { this.cnpj = cnpj; }

public String getInscrEstad() { return inscrEstad; }

public void setInscrEstad(String inscrEstad) { this.inscrEstad = inscrEstad; } [/code]

Arquivo Persisitence [code] !-- Aqui são listadas todas as entidades --> br.com.erp2.mgcad.Empresa

[/code]

2 respostas

Este é o retorno do console.

br 06, 2015 3:25:52 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptionsWARN: SQL Error: 1146, SQLState: 42S02Abr 06, 2015 3:25:52 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptionsERROR: Table 'erp2.empresa' doesn't existAbr 06, 2015 3:25:52 PM com.sun.faces.lifecycle.InvokeApplicationPhase executeADVERTÊNCIA: #{empresaBean.gravar}: javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute statementjavax.faces.FacesException: #{empresaBean.gravar}: javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute statement at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:117)

solução!

Srs, eu achei o erro. Estava na linha

[code] private String idEmpresa; [/code]

O correto é [code] private Integer idEmpresa; [/code]

Essa é á chave primaria eu penso que ela não deve ser do tipo String.

Abraço.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software