Hsqldb

5 respostas
furutani

Olá

Você deu commit apos o insert?

5 Respostas

Javabuntu

colega coloque o código ae… pra ficar mais fácil achar o problema…

L

Olá,
Estou tentando usar o HSQLDB, mas eu faço o insert, fecho a minha aplicação e quando executo-a de novo fazendo um select, não existe nenhm dado. Na string de conexão eu usei o :file: mas mesmo assim não persiste.

Alguem ja passou por este problema?

Obrigado,
Oscar

L

furutani:
Olá

Você deu commit apos o insert?

Oi, eu dei sim.
Tenho uma main de teste que chama o método que popula uma tabela e um que faz um select. Se eu executo ambos na mesma execucao, eu consigo recuperar o dado, mas se eu executo o de popular, fecho a app e executo o de select, nao consigo o retorno.
No meu método eu estou fazendo
EntityTransaction tx …

tx.comit();
É isto né? eu estou um pouco perdido com o JPA…

L
public void popula(){
    	System.out.println("Populando tabela usuario... ");
    	EntityTransaction tx = manager.getTransaction();
    	tx.begin();
    	try {

    		Usuario us1 = new Usuario();
    		us1.setNome("Aninha");
    		us1.setID(1);
    		us1.setSenha("aaa");
    		manager.persist(us1);
    		    		
    		tx.commit();
    		System.out.println("Ok");
    	}catch(RuntimeException e) { // <-- importante, agora é runtime
    	  e.printStackTrace();
    		tx.rollback();
    	}    	
    }
    
    public void get()
    {
    	EntityTransaction tx = manager.getTransaction();
    	tx.begin();
    	List<Usuario> usuarios = null;
    	try{
    	Query query = manager.createNamedQuery("Usuario.listarTodos");
    	usuarios = query.getResultList();
		tx.commit();
		System.out.println(usuarios);
    	}
    	catch(RuntimeException e)
    	{
    		e.printStackTrace();
    	}
    }

Isto é o código que faz acesso ao banco. A classe Usuário é apenas uma classe para encapsular os registro do banco de dados.
Esta é a main:

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;


public class TestaUsuario {
	private static EntityManagerFactory factory;
	private static EntityManager manager;
	
public static void main(String[] args) {
	 factory = Persistence.createEntityManagerFactory("empregados");
	  manager = factory.createEntityManager();

	  UsuarioDAO.getInstance().setManager(manager);
	  UsuarioDAO.getInstance().popula();
	  UsuarioDAO.getInstance().get();
	System.out.println("OK!");
}
}
L

Resolvido: Eu coloquei a propriedade shutdown=true e dei close na saíoda da main…
Então tudo funcionou :slight_smile:

Criado 12 de maio de 2007
Ultima resposta 13 de mai. de 2007
Respostas 5
Participantes 3