Olá, estou com problema que não consigo resovler, ao tentar persistir o JUNIT fica OK, mas não persisti.
meu persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="pos-java-maven-hibernate" transaction-type="RESOURCE_LOCAL">
<class>model.UsuarioPessoa</class>
<properties>
<!-- Dados de conexão com o banco -->
<property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />
<property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/posjavahibernate" />
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
<property name="hibernate.connection.username" value="postgres" />
<property name="hibernate.connection.password" value="admin" />
<property name="hibernate.format_sql" value="false" />
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>
meu Model
package model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class UsuarioPessoa {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String nome;
private String sobrenome;
private String email;
private String login;
private String senha;
private int idade;
public void setIdade(int idade) {
this.idade = idade;
}
public int getIdade() {
return idade;
}
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 getSobrenome() {
return sobrenome;
}
public void setSobrenome(String sobrenome) {
this.sobrenome = sobrenome;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
@Override
public String toString() {
return "UsuarioPessoa [id=" + id + ", nome=" + nome + ", sobrenome=" + sobrenome + ", email=" + email
+ ", login=" + login + ", senha=" + senha + ", idade=" + idade + "]";
}
}
meu DAO
package dao;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import posjavamavenhibernate.HibernateUtil;
public class DaoGeneric<E> {
private EntityManager entityManager = HibernateUtil.geEntityManager();
public void salvar(E entidade) {
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
entityManager.persist(entidade);
transaction.commit();
}
public E updateMerge(E entidade) { // salva ou atualiza
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
E entidadeSalva = entityManager.merge(entidade);
transaction.commit();
return entidadeSalva;
}
public E pesquisar(E entidade) {
Object id = HibernateUtil.getPrimaryKey(entidade);
E e = (E) entityManager.find(entidade.getClass(), id);
return e;
}
public E pesquisar(Long id, Class<E> entidade) {
E e = (E) entityManager.find(entidade, id);
return e;
}
public void deletarPoId(E entidade) {
Object id = HibernateUtil.getPrimaryKey(entidade);
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
entityManager
.createNativeQuery(
"delete from " + entidade.getClass().getSimpleName().toLowerCase() + " where id =" + id)
.executeUpdate(); // faz delete
transaction.commit();// grava alteração no banco
}
public List<E> listar(Class<E> entidade) {
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
List<E> lista = entityManager.createQuery("from " + entidade.getName()).getResultList();
transaction.commit();
return lista;
}
}
Classe de Test
@Test
public void testeHibernateUtil(){
try {
DaoGeneric<UsuarioPessoa> daoGeneric = new DaoGeneric<UsuarioPessoa>();
UsuarioPessoa pessoa = new UsuarioPessoa();
pessoa.setLogin("meuLogin");
pessoa.setNome("Paulo");
pessoa.setSenha("1235434");
pessoa.setSobrenome("Meu Sobrenome");
pessoa.setEmail("pessoa@uol.com");
daoGeneric.salvar(pessoa);
}
catch (Exception e) {
e.printStackTrace();
}
}
meu log sem erro
abr. 15, 2022 10:51:16 AM org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation
INFO: HHH000204: Processing PersistenceUnitInfo [name: pos-java-maven-hibernate]
abr. 15, 2022 10:51:17 AM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate ORM core version 5.6.1.Final
abr. 15, 2022 10:51:17 AM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.1.2.Final}
abr. 15, 2022 10:51:17 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
abr. 15, 2022 10:51:17 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001005: using driver [org.postgresql.Driver] at URL [jdbc:postgresql://localhost:5432/posjavahibernate]
abr. 15, 2022 10:51:17 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001001: Connection properties: {password=****, user=postgres}
abr. 15, 2022 10:51:17 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001003: Autocommit mode: false
abr. 15, 2022 10:51:17 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init>
INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
abr. 15, 2022 10:51:17 AM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.PostgreSQLDialect
abr. 15, 2022 10:51:18 AM org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection
INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@2ab5afc7] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode.
abr. 15, 2022 10:51:18 AM org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateService
INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]