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.
<h:panelGrid columns="2">
<h:outputLabel value="Razão Social:" for="razaoSocial" />
<h:inputText id="razaoSocial" value="#{empresaBean.empresa.razaoSocial}" />
<h:outputLabel value="CNPJ:" for="cnpj" />
<h:inputText id="cnpj" value="#{empresaBean.empresa.cnpj}" />
<h:outputLabel value="Inscr. Estadual" for="inscrEstad" />
<h:inputText id="inscrEstad" value="#{empresaBean.empresa.inscrEstad}" />
<h:commandButton value="Gravar" action="#{empresaBean.gravar}"/>
</h:panelGrid>
Classe EmpresaBean
@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>(Empresa.class).adiciona(this.empresa);
}
}
DAO
public class DAO<T> {
private final Class<T> classe;
public DAO(Class<T> 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();
}
}
Hibernate
public class JPAUtil {
private static EntityManagerFactory manager = Persistence
.createEntityManagerFactory("erp2");
public EntityManager getEntityManagerFactory() {
return JPAUtil.manager.createEntityManager();
}
}
@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;
}
Arquivo Persisitence
!-- Aqui são listadas todas as entidades -->
<class>br.com.erp2.mgcad.Empresa</class>
<properties>
<!-- Propriedades JDBC -->
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/erp2" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="121609" />
<!-- Configurações específicas do Hibernate -->
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
</properties>
Console
Abr 06, 2015 3:25:52 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 1146, SQLState: 42S02
Abr 06, 2015 3:25:52 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: Table 'erp2.empresa' doesn't exist
Abr 06, 2015 3:25:52 PM com.sun.faces.lifecycle.InvokeApplicationPhase execute
ADVERTÊNCIA: #{empresaBean.gravar}: javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute statement
javax.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)