Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Problema HSQLDB

Pessoal, estou utilizando o hsqldb para os estudos de JPA e aparentemente os dados não estão sendo gravados no banco. Quando eu rodo a classe PopulaConta o hibernate faz todos os inserts mas quando eu tento utilizar o método find para retornar os dados, o objeto retorna como nulo após a consulta.

Persistence.xml

<persistence 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"
    version="2.0">
    <!-- unidade de persistencia com o nome financas -->
    <persistence-unit name="financas">
        <!-- Implementação do JPA, no nosso caso Hibernate -->
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <!-- Aqui são listadas todas as entidades -->
        <class>br.com.caelum.financas.model.Conta</class>
        <properties><!-- Propriedades JDBC -->
            <property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbcDriver"/>
            <property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:financas"/>
            <property name="javax.persistence.jdbc.user" value="sa"/>
            <property name="javax.persistence.jdbc.password" value=""/><!-- Configurações específicas do Hibernate -->
            <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
            <property name="hibernate.hbm2ddl.auto" value="update"/>
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.format_sql" value="true"/>
        </properties>
    </persistence-unit>
</persistence>

Populaconta.java

package br.com.caelum.financas.util;

import javax.persistence.EntityManager;

import br.com.caelum.financas.model.Conta;

public class PopulaConta {

  public static void main(String[] args) {

        EntityManager manager = new JPAUtil().getEntityManager();

        manager.getTransaction().begin();

        Conta conta1 = new Conta();
        Conta conta2 = new Conta();
        Conta conta3 = new Conta();
        Conta conta4 = new Conta();
        Conta conta5 = new Conta();

        conta1.setBanco("001 - BANCO DO BRASIL");
        conta1.setNumero("16987-8");
        conta1.setAgencia("6543");
        conta1.setTitular("Maria dos Santos");

        conta2.setBanco("237 - BANCO BRADESCO");
        conta2.setNumero("86759-1");
        conta2.setAgencia("1745");
        conta2.setTitular("Paulo Roberto Souza");

        conta3.setBanco("341 - BANCO ITAU UNIBANCO");
        conta3.setNumero("46346-3");
        conta3.setAgencia("4606");
        conta3.setTitular("Antonio Duraes");

        conta4.setBanco("033 - BANCO SANTANDER");
        conta4.setNumero("12345-6");
        conta4.setAgencia("9876");
        conta4.setTitular("Leandra Marques");

        conta5.setBanco("104 - CAIXA ECONOMICA FEDERAL");
        conta5.setNumero("98654-3");
        conta5.setAgencia("1234");
        conta5.setTitular("Alexandre Duarte");

        // persistindo as contas
        manager.persist(conta1);
        manager.persist(conta2);
        manager.persist(conta3);
        manager.persist(conta4);
        manager.persist(conta5);

        manager.getTransaction().commit();

        manager.close();

    }
}

TesteEstadosJPA.java

package br.com.caelum.financas.teste;

import javax.persistence.EntityManager;

import br.com.caelum.financas.model.Conta;
import br.com.caelum.financas.util.JPAUtil;

public class TesteEstadosJPA {

    public static void main(String[] args) {

        EntityManager manager = new JPAUtil().getEntityManager();

        manager.getTransaction().begin();

        Conta conta = manager.find(Conta.class, 1);

        System.out.println(conta);

        manager.getTransaction().commit();
        manager.close();

    }
}
2 respostas

Boa tarde Bruno!

Já fez uma consulta na tabela através do SGBD para ter certeza de que os registros não foram inseridos? Verificou se o log no console lança alguma exceção?

solução!

Phelipe, como eu nunca utilizei o HSQLDB eu resolvi trocar para o MySQL para poder continuar o curso sem problemas.