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

6 respostas
javahibernate
C

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

6 Respostas

D

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.

C

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’.

D

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.

C

É… 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?

C

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

D

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•

Criado 17 de agosto de 2016
Ultima resposta 17 de ago. de 2016
Respostas 6
Participantes 2