Oi galera este é o meu primeiro Tópico. Estou mais de um mês tentando solucionar este problema com PostgreSQL com Hibernate até agora nada.
Persistence
<persistence version="2.0"
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">
<persistence-unit name="lojavirtualDB" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>entities.Produto</class>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
<property name="hibernate.hbm2dll.auto" value="update"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost/lojavirtualDB"/>
<property name="javax.persistence.jdbc.user" value="XXX"/>
<property name="javax.persistence.jdbc.password" value="XXX"/>
<property name="hibernate.temp.use_jdbc_metadata_defaults" value="false"/>
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
</properties>
</persistence-unit>
</persistence>
Entidade Produto
@Entity
@SequenceGenerator(name = "exemplo", sequenceName = "exemplo")
// Criar sequência antes no BD
public class Produto {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "exemplo")
int id;
String nome;
double preco;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public double getPreco() {
return preco;
}
public void setPreco(double preco) {
this.preco = preco;
}
}
Classe inserir
public static void main(String[] args) {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("lojavirtualDB");
EntityManager em = factory.createEntityManager();
Produto p = new Produto();
p.setNome("camiseta");
p.setPreco(12.23);
em.getTransaction().begin();
em.persist(p);
em.getTransaction().commit();
}
Gera o seguinte erro:
0 [main] INFO org.hibernate.cfg.annotations.Version - Hibernate Annotations 3.5.4-Final
1 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.5.4-Final
21 [main] INFO org.hibernate.cfg.Environment - hibernate.properties not found
21 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist
21 [main] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
151 [main] INFO org.hibernate.annotations.common.Version - Hibernate Commons Annotations 3.2.0.Final
151 [main] INFO org.hibernate.ejb.Version - Hibernate EntityManager 3.5.4-Final
861 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: entities.Produto
931 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity entities.Produto on table Produto
981 [main] INFO org.hibernate.cfg.AnnotationConfiguration - Hibernate Validator not found: ignoring
1041 [main] INFO org.hibernate.cfg.search.HibernateSearchEventListenerRegister - Unable to find org.hibernate.search.event.FullTextIndexEventListener on the classpath. Hibernate Search is not enabled.
1222 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Using Hibernate built-in connection pool (not for production use!)
1222 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Hibernate connection pool size: 20
1222 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - autocommit mode: true
1562 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - using driver: org.postgresql.Driver at URL: jdbc:postgresql://localhost/lojavirtualDB
1562 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - connection properties: {user=postgres, password=****, autocommit=true, release_mode=auto}
1642 [main] INFO org.hibernate.dialect.Dialect - Using dialect: org.hibernate.dialect.PostgreSQLDialect
1652 [main] INFO org.hibernate.engine.jdbc.JdbcSupportLoader - Disabling contextual LOB creation as connection was null
1662 [main] INFO org.hibernate.transaction.TransactionFactoryFactory - Transaction strategy: org.hibernate.transaction.JDBCTransactionFactory
1672 [main] INFO org.hibernate.transaction.TransactionManagerLookupFactory - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
1672 [main] INFO org.hibernate.cfg.SettingsFactory - Automatic flush during beforeCompletion(): disabled
1672 [main] INFO org.hibernate.cfg.SettingsFactory - Automatic session close at end of transaction: disabled
1672 [main] INFO org.hibernate.cfg.SettingsFactory - Scrollable result sets: disabled
1672 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC3 getGeneratedKeys(): disabled
1672 [main] INFO org.hibernate.cfg.SettingsFactory - Connection release mode: auto
1672 [main] INFO org.hibernate.cfg.SettingsFactory - Default batch fetch size: 1
1672 [main] INFO org.hibernate.cfg.SettingsFactory - Generate SQL with comments: disabled
1672 [main] INFO org.hibernate.cfg.SettingsFactory - Order SQL updates by primary key: disabled
1672 [main] INFO org.hibernate.cfg.SettingsFactory - Order SQL inserts for batching: disabled
1672 [main] INFO org.hibernate.cfg.SettingsFactory - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
1672 [main] INFO org.hibernate.hql.ast.ASTQueryTranslatorFactory - Using ASTQueryTranslatorFactory
1672 [main] INFO org.hibernate.cfg.SettingsFactory - Query language substitutions: {}
1672 [main] INFO org.hibernate.cfg.SettingsFactory - JPA-QL strict compliance: enabled
1672 [main] INFO org.hibernate.cfg.SettingsFactory - Second-level cache: enabled
1672 [main] INFO org.hibernate.cfg.SettingsFactory - Query cache: disabled
1672 [main] INFO org.hibernate.cfg.SettingsFactory - Cache region factory : org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge
1682 [main] INFO org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge - Cache provider: org.hibernate.cache.NoCacheProvider
1682 [main] INFO org.hibernate.cfg.SettingsFactory - Optimize cache for minimal puts: disabled
1682 [main] INFO org.hibernate.cfg.SettingsFactory - Structured second-level cache entries: disabled
1682 [main] INFO org.hibernate.cfg.SettingsFactory - Echoing all SQL to stdout
1682 [main] INFO org.hibernate.cfg.SettingsFactory - Statistics: disabled
1682 [main] INFO org.hibernate.cfg.SettingsFactory - Deleted entity synthetic identifier rollback: disabled
1682 [main] INFO org.hibernate.cfg.SettingsFactory - Default entity-mode: pojo
1682 [main] INFO org.hibernate.cfg.SettingsFactory - Named query checking : enabled
1682 [main] INFO org.hibernate.cfg.SettingsFactory - Check Nullability in Core (should be disabled when Bean Validation is on): enabled
1862 [main] INFO org.hibernate.impl.SessionFactoryImpl - building session factory
2202 [main] INFO org.hibernate.impl.SessionFactoryObjectFactory - Not binding factory to JNDI, no JNDI name configured
Hibernate:
select
nextval ('exemplo')
Hibernate:
insert
into
Produto
(nome, preco, id)
values
(?, ?, ?)
3123 [main] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 0, SQLState: 42P01
3123 [main] ERROR org.hibernate.util.JDBCExceptionReporter - ERRO: relação "produto" não existe
Posição: 13
3133 [main] ERROR org.hibernate.event.def.AbstractFlushingEventListener - Could not synchronize database state with session
org.hibernate.exception.SQLGrammarException: could not insert: [entities.Produto]
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:92)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2438)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2858)
at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:79)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:268)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:260)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:179)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1206)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:375)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:76)
at testes.TestainsereProdutoPostgreSQL.main(TestainsereProdutoPostgreSQL.java:23)
Caused by: org.postgresql.util.PSQLException: ERRO: relação "produto" não existe
Posição: 13
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2157)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1886)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:555)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:417)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:363)
at org.hibernate.jdbc.NonBatchingBatcher.addToBatch(NonBatchingBatcher.java:46)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2418)
... 12 more
Exception in thread "main" javax.persistence.RollbackException: Error while committing the transaction
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:93)
at testes.TestainsereProdutoPostgreSQL.main(TestainsereProdutoPostgreSQL.java:23)
Caused by: javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not insert: [entities.Produto]
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1235)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1168)
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:81)
... 1 more
Caused by: org.hibernate.exception.SQLGrammarException: could not insert: [entities.Produto]
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:92)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2438)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2858)
at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:79)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:268)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:260)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:179)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1206)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:375)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:76)
... 1 more
Caused by: org.postgresql.util.PSQLException: ERRO: relação "produto" não existe
Posição: 13
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2157)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1886)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:555)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:417)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:363)
at org.hibernate.jdbc.NonBatchingBatcher.addToBatch(NonBatchingBatcher.java:46)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2418)
... 12 more
Por favor me ajudem, pois este mesmo código funciona com MySQl, mas necessito que seja no PostgreSQL