JPA + Hibernate Error: A tabela/visão não existe

Galera… bom dia
Estou trabalhando com uma aplicação desktop e pretendo persistir informações (local) utilizando o Derby DB
Estou utilizando JPA e Hibernate como frameworks para ORM. É a primeira vez que faço uso de Hibernate e estou com dificuldades em entender o erro que estou enfrentando… Alguém consegue me dar uma mão
Sempre que tento fazer qualquer operação de CRUD a resposta é A tabela/visão ‘CLIENTE’ não existe

Desde já, obrigado

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
org.hibernate.ejb.HibernatePersistence
  	<!-- atualiza o banco, gera as tabelas se for preciso -->
  	<property name="javax.persistence.jdbc.url" value="jdbc:derby:myDB;create=true" />
  	<property name="javax.persistence.jdbc.user" value="APP" />
  	<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
  	<property name="javax.persistence.jdbc.password" value="APP" />
  	<property name="javax.persistence.schema-generation.database.action" value="create" />
  </properties>

minha classe (unica classe)

@Entity
@Table(name = “CLIENTE”)
public class Cliente implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@Column(name = “id”)
private int id;
@Column
private String nome;
@Column
private String cpf;
@Column
private String rg;
}

método de persistência

public void persist(Cliente cliente) {
try {
if (entityManager.isOpen()) {
entityManager.getTransaction().begin();
entityManager.persist(cliente);
entityManager.getTransaction().commit();
}
} catch (Exception ex) {
ex.printStackTrace();
entityManager.getTransaction().rollback();
}
}

Log gerado

ago 17, 2016 12:08:34 PM org.hibernate.annotations.common.Version
INFO: HCANN000001: Hibernate Commons Annotations {4.0.2.Final}
ago 17, 2016 12:08:34 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.2.19.Final}
ago 17, 2016 12:08:34 PM org.hibernate.cfg.Environment
INFO: HHH000206: hibernate.properties not found
ago 17, 2016 12:08:34 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
ago 17, 2016 12:08:34 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH000402: Using Hibernate built-in connection pool (not for production use!)
ago 17, 2016 12:08:35 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000115: Hibernate connection pool size: 20
ago 17, 2016 12:08:35 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000006: Autocommit mode: true
ago 17, 2016 12:08:35 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000401: using driver [org.apache.derby.jdbc.EmbeddedDriver] at URL [jdbc:derby:myDB;create=true]
ago 17, 2016 12:08:35 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000046: Connection properties: {user=APP, password=****, autocommit=true, release_mode=auto}
ago 17, 2016 12:08:35 PM org.hibernate.dialect.Dialect
INFO: HHH000400: Using dialect: org.hibernate.dialect.DerbyTenSevenDialect
ago 17, 2016 12:08:35 PM org.hibernate.engine.transaction.internal.TransactionFactoryInitiator initiateService
INFO: HHH000268: Transaction strategy: org.hibernate.engine.transaction.internal.jdbc.JdbcTransactionFactory
ago 17, 2016 12:08:35 PM org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory
INFO: HHH000397: Using ASTQueryTranslatorFactory
Hibernate:
insert
into
CLIENTE
(cpf, nome, rg, id)
values
(?, ?, ?, ?)
ago 17, 2016 12:08:35 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 20000, SQLState: 42X05
ago 17, 2016 12:08:35 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: A tabela/visão ‘CLIENTE’ não existe.
javax.persistence.RollbackException: Error while committing the transaction
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:92)
at ClienteJpaDAO.persist(ClienteJpaDAO.java:48)
at MainApplication.addClient1(MainApplication.java:17)
at MainApplication.main(MainApplication.java:7)
Caused by: javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not prepare statement
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1387)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1310)
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:80)
… 3 more
Caused by: org.hibernate.exception.SQLGrammarException: could not prepare statement
at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82)
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:124)
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:193)
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareStatement(StatementPreparerImpl.java:89)
at org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl.buildBatchStatement(AbstractBatchImpl.java:150)
at org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl.getBatchStatement(AbstractBatchImpl.java:139)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3057)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3521)
at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:88)
at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:395)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:387)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:303)
at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:349)
at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:56)
at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1195)
at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:404)
at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175)
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:75)
… 3 more
Caused by: java.sql.SQLSyntaxErrorException: A tabela/visão ‘CLIENTE’ não existe.
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement.(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement42.(Unknown Source)
at org.apache.derby.jdbc.Driver42.newEmbedPreparedStatement(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$1.doPrepare(StatementPreparerImpl.java:96)
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:183)
… 19 more
Caused by: ERROR 42X05: A tabela/visão ‘CLIENTE’ não existe.
at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
at org.apache.derby.impl.sql.compile.DMLModStatementNode.verifyTargetTable(Unknown Source)
at org.apache.derby.impl.sql.compile.InsertNode.bindStatement(Unknown Source)
at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown Source)
… 26 more
Exception in thread “main” java.lang.IllegalStateException: Transaction not active
at org.hibernate.ejb.TransactionImpl.rollback(TransactionImpl.java:103)
at ClienteJpaDAO.persist(ClienteJpaDAO.java:52)
at MainApplication.addClient1(MainApplication.java:17)
at MainApplication.main(MainApplication.java:7)

META-INF

Ol @Caio_S_Christino.

Da uma olhada no meu persistence.xml , usei o derby também.

So para fins de teste, crie a tabela manualmente e vê se irá persistir.

1 curtida

Oi @Daniel_Dias
utilizando o seu persistence.xml eu não consigo mais conectar ao meu db

WARN: HHH000342: Could not obtain connection to query metadata : java.net.ConnectException : Erro ao conectar no servidor ‘localhost’ porta ‘1.527’. Recebida a mensagem: ‘Connection refused: connect’.

Vi que voce usa o eclipse para conectar com o derby.
Nesse meu utilizei o netbeans pois era mais fácil de configurar, pois nele o derby inicia junto com o glassfish,por isso tem o localhost e a porta.

E a sua esta usando embutido. E eu não conseguia fazer nada utilizando o eclipse para esse banco.

1 curtida

É… estou usando eclipse
Eu implementei seu modelo de DAOFactoryDerby… cheguei no mesmo problema

java.sql.SQLSyntaxErrorException: A tabela/visão ‘CLIENTE’ não existe

Tenho pouca exp com DerbyDB… e eu não entendi. Deve ser startado?

Man… utilizando sua estrutura de DAOFactoryDerby eu resolvi o problema…
Eu criei um método de create table… simples assim rsr

1 curtida

Pelo menos a estrutura do padrão de design te ajudou em algo.

Poste a sua solução para o demais colegas e marcar sua resposta como certa para encerrar o tópico.

{},s•