@andremeiras escreveu:
Fala pessoal, tudo certo?
Estou com um “problema” com o Hibernate. Digo problema pois não consegui identificar o que está ocorrendo, porém acredito que possa ser algo relacionado com a propriedade
hibernate.hbm2ddl.auto
ou talvez com esta versão do Hibernate que estou utilizando.Mapeei as classes que eu quero criar automaticamente com o Hibernate. Até aí tudo certo. Ele cria as tabelas normalmente no banco de dados, mas logo após criar minhas tabelas, ele cria automaticamente uma outra tabela chamada de hibernate_sequence, e por fim, tenta fazer o insert nessa última tabela, ao invés de inserir na tabela que estou informando no método main (testes).
Alguém já passou por isso e poderia me dar um help?
Trecho do retorno no console:
Mar 18, 2021 12:25:09 AM org.hibernate.jpa.boot.spi.ProviderChecker hibernateProviderNamesContain WARN: HHH015016: Encountered a deprecated javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence]; [org.hibernate.jpa.HibernatePersistenceProvider] will be used instead. Mar 18, 2021 12:25:09 AM org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation INFO: HHH000204: Processing PersistenceUnitInfo [name: PedidoPU] Mar 18, 2021 12:25:09 AM org.hibernate.Version logVersion INFO: HHH000412: Hibernate ORM core version 5.4.29.Final Mar 18, 2021 12:25:09 AM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit> INFO: HCANN000001: Hibernate Commons Annotations {5.1.2.Final} Mar 18, 2021 12:25:09 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!) Mar 18, 2021 12:25:09 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH10001005: using driver [com.mysql.cj.jdbc.Driver] at URL [jdbc:mysql://localhost/cursojavaee] Mar 18, 2021 12:25:09 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH10001001: Connection properties: {password=****, user=root} Mar 18, 2021 12:25:09 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH10001003: Autocommit mode: false Mar 18, 2021 12:25:09 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init> INFO: HHH000115: Hibernate connection pool size: 20 (min=1) Mar 18, 2021 12:25:09 AM org.hibernate.dialect.Dialect <init> INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect Mar 18, 2021 12:25:10 AM org.hibernate.resource.beans.spi.ManagedBeanRegistryInitiator resolveBeanContainer INFO: HHH10005002: No explicit CDI BeanManager reference was passed to Hibernate, but CDI is available on the Hibernate ClassLoader. Hibernate: drop table if exists Cliente Mar 18, 2021 12:25:10 AM org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@3d904e9c] 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. Hibernate: drop table if exists Endereco Hibernate: drop table if exists hibernate_sequence Hibernate: create table Cliente (id bigint not null, documentoReceitaFederal varchar(255), email varchar(255), nome varchar(255), tipo integer, primary key (id)) engine=MyISAM Mar 18, 2021 12:25:10 AM org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@4fc3c165] 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. Hibernate: create table Endereco (id bigint not null, cep varchar(255), cidade varchar(255), cliente tinyblob, complemento varchar(255), logradouro varchar(255), numero varchar(255), uf varchar(255), primary key (id)) engine=MyISAM Hibernate: create table hibernate_sequence (next_val bigint) engine=MyISAM Hibernate: insert into hibernate_sequence values ( 1 ) Mar 18, 2021 12:25:10 AM org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateService INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
Segue meu arquivo persistence.xml:
<persistence-unit name="PedidoPU"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <properties> <!-- Acesso ao banco de dados --> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/cursojavaee" /> <property name="javax.persistence.jdbc.user" value="root" /> <property name="javax.persistence.jdbc.password" value="root" /> <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver" /> <!-- Criar tabelas automaticamente --> <property name="hibernate.hbm2ddl.auto" value="create" /> <!-- Mostrar as queries no console --> <property name="hibernate.show_sql" value="true" /> <!-- Definindo o dialeto para o MySQL (conversão exata de código) --> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" /> </properties> </persistence-unit> </persistence>
Também o pom.xml:
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <!-- Núcleo do Hibernate --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.4.29.Final</version> <scope>compile</scope> </dependency> <!-- Implementação de EntityManager da JPA --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>5.4.29.Final</version> <scope>compile</scope> </dependency> <!-- Driver JDBC do MySQL --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.23</version> <scope>compile</scope> </dependency> <!-- Weld (implementação do CDI) --> <dependency> <groupId>org.jboss.weld.servlet</groupId> <artifactId>weld-servlet</artifactId> <version>2.2.9.Final</version> <scope>compile</scope> </dependency> <!-- Weld depende do Jandex --> <dependency> <groupId>org.jboss</groupId> <artifactId>jandex</artifactId> <version>1.2.2.Final</version> <scope>compile</scope> </dependency> </dependencies> <build> <finalName>PedidoVenda</finalName> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.0</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> <repositories> <repository> <id>prime-repo</id> <name>PrimeFaces Maven Repository</name> <url>http://repository.primefaces.org</url> <layout>default</layout> </repository> </repositories> </project>
E a classe Cliente que deve se tornar uma tabela no banco de dados:
package model; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Transient; @Entity public class Cliente implements Serializable { private static final long serialVersionUID = 1L; private Long id; private String nome; private String email; private String documentoReceitaFederal; private TipoPessoa tipo; private List<Endereco> enderecos = new ArrayList<>(); // melhor instanciar as List<> para evitar problemas de // NullPointerException @Id @GeneratedValue 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 getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getDocumentoReceitaFederal() { return documentoReceitaFederal; } public void setDocumentoReceitaFederal(String documentoReceitaFederal) { this.documentoReceitaFederal = documentoReceitaFederal; } @Transient public List<Endereco> getEnderecos() { return enderecos; } public void setEnderecos(List<Endereco> enderecos) { this.enderecos = enderecos; } public TipoPessoa getTipo() { return tipo; } public void setTipo(TipoPessoa tipo) { this.tipo = tipo; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((id == null) ? 0 : id.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Cliente other = (Cliente) obj; if (id == null) { if (other.id != null) return false; } else if (!id.equals(other.id)) return false; return true; } }
Mensagens: 1
Participantes: 1