Meu problema é que quando eu clico no button Gravar, o programa não persiste os dados no banco. Todavia, quando executo minha classe de testes ele grava. Queria saber qual o problema?
Estou expondo algo do meu código e do meu projeto aqui e o restante se encontra-se em meu git. Caso prefira acessar o código lá, apenas me informe seu nome no bitbucket, pois meu git está muito porco para eu expô-lo. kkkkkk
Primeiramente segue a estrutura do meu projeto:
C:.
├───.git
│ ├───hooks
│ ├───info
│ ├───logs
│ │ └───refs
│ │ ├───heads
│ │ └───remotes
│ │ └───origin
│ ├───objects
│ │ ...
│ │ ├───info
│ │ └───pack
│ └───refs
│ ├───heads
│ ├───remotes
│ │ └───origin
│ └───tags
├───.settings
├───src
│ ├───main
│ │ ├───java
│ │ │ ├───controller
│ │ │ ├───dao
│ │ │ └───model
│ │ ├───resources
│ │ │ └───META-INF
│ │ └───webapp
│ │ ├───css
│ │ └───WEB-INF
│ │ └───lib
│ └───test
│ ├───java
│ └───resources
│ └───META-INF
└───target
├───classes
│ ├───controller
│ ├───css
│ ├───dao
│ ├───META-INF
│ ├───model
│ └───WEB-INF
│ └───lib
├───m2e-wtp
│ └───web-resources
│ └───META-INF
│ └───maven
│ └───br.sp.saopaulo.cortina.home
│ └───ProjetoWeb
└───test-classes
└───META-INF
Segue o código da minha classe Cidadão:
package model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import org.apache.log4j.Logger;
@Entity
public class Cidadao extends Pessoa {
private static Logger logger = Logger.getLogger(Cidadao.class);
}
Segue o código da minha classe Pessoa:
package model;
import javax.persistence.*;
@Entity
public abstract class Pessoa {
@Id @GeneratedValue(strategy=GenerationType.AUTO)
private long id;
private String nome;
private String cpf;
private String municipio;
private String endereco;
private String cep;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getMunicipio() {
return municipio;
}
public void setMunicipio(String municipio) {
this.municipio = municipio;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public String getCep() {
return cep;
}
public void setCep(String cep) {
this.cep = cep;
}
}
Segue o código da minha classe de testes:
import javax.persistence.EntityManager;
import dao.JPAUtil;
import model.Cidadao;
public class CidadaoTeste {
public static void main(String[] args) {
Cidadao cidadao = new Cidadao();
cidadao.setNome("Enzo Seraphim");
cidadao.setCep("05677888");
cidadao.setCpf("09888777890");
cidadao.setEndereco("Avenida Faria Dutra");
cidadao.setMunicipio("Sorocaba");
EntityManager em = new JPAUtil().getEntityManager();
em.getTransaction().begin();
em.persist(cidadao);
em.getTransaction().commit();
em.close();
}
}
Segue o código da minha classe JPAUtil:
package dao;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class JPAUtil {
private static EntityManagerFactory emf = Persistence
.createEntityManagerFactory("sports_city_manager");
public EntityManager getEntityManager() {
return emf.createEntityManager();
}
public void close(EntityManager em) {
em.close();
}
}
Minha classe DAO é exatamente igual a de vocês.
Meu arquivo pom.xml (Estou usando MAVEN):
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>br.sp.saopaulo.cortina.home</groupId>
<artifactId>ProjetoWeb</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<!-- JBoss Maven <dependency> <groupId>org.jboss.as.plugins</groupId> <artifactId>jboss-as-maven-plugin</artifactId>
<version>7.7.Final</version> <type>maven-plugin</type> </dependency> -->
<!-- Log4J para fazer log no servidor -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- JSF Mojarra -->
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
<version>2.2.0</version>
</dependency>
<!-- PrimeFaces -->
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>5.3</version>
</dependency>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.0.2.Final</version>
</dependency>
<!-- PostgreSQL -->
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901-1.jdbc4</version>
</dependency>
</dependencies>
</project>
Meu arquivo persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence 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"
version="2.0">
<persistence-unit name="sports_city_manager"
transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>model.Cidadao</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
<property name="javax.persistence.jdbc.url"
value="jdbc:postgresql://localhost:5433/webproject_hibernate_db"></property>
<property name="javax.persistence.jdbc.user" value="dsbonafe" />
<property name="javax.persistence.jdbc.password" value="admin" />
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
<property name="hibernate.connection.shutdown" value="true" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.temp.use_jdbc_metadata_defaults" value="false"/>
</properties>
</persistence-unit>
</persistence>
Por fim, meu xhtml:
<!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:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<head>
<title>Cidadão</title>
</head>
<body>
<fieldset>
<legend>Cadastro do cidadão</legend>
<h:outputLabel value="Nome do cidadão: " for="nomeDoCidadao" />
<h:inputText id="nomeDoCidadao" value="#{cidadaoBean.cidadao.nome}" />
<h:outputLabel value="CPF: " for="cpf" />
<h:inputText id="cpf" value="#{cidadaoBean.cidadao.cpf}"/>
<h:outputLabel value="Município: " for="municipio" />
<h:inputText value="#{cidadaoBean.cidadao.municipio}" id="municipio" />
<h:outputLabel value="Endereço: " for="endereco" />
<h:inputText value="#{cidadaoBean.cidadao.endereco}" id="endereco"/>
<h:outputLabel value="C.E.P.: " for="cep" />
<h:inputText value="#{cidadaoBean.cidadao.cep}" id="cep" />
<h:button value="Gravar" type="graver" action="#{cidadaoBean.gravar}" />
</fieldset>
</body>
</html>