[hibernate] separar um resultado de uma query em 2 objetos

6 respostas
B

Olá amigos do GUJ,

Estou com um problema, nao sei como recuperar o resultado de um query usando hibernate sendo que sao 2 entidades.

Obs: O usuário tem mais de um telefone.

String sql_final = "select tb_usuario.c_nome,tb_telefone.c_telefone from tb_usuario, tb_telefone where tb_usuario.c_id = tb_telefone.c_id_usuario and tb_usuario.c_nome = 'Bruno' ";
    Query select = session.createSQLQuery(sql_final).addEntity(TbUsuario.class).addEntity(TbTelefone.class);

    TbUsuario usuario = new TbUsuario();
    TbTelefone telefone = new TbTelefone();

    List lista = null;
    lista = select.list();
   
     for (int i = 0; i < lista.size(); ++i) {
            System.out.println ("N: "+i+" / V: "+lista.get(i));   
     }

A query funciona no PostgreSQL gostaria de recuperar os dados separando em objetos (usuário e telefone);

Obrigado pela atenção. 8)

6 Respostas

fiaux

Crie a classe Usuario com uma coleção de Telefone e configure o mapeamento do hibernate.

http://docs.jboss.org/hibernate/stable/annotations/reference/en/html/entity.html#entity-mapping-association-collections

L

cara nesses tipos de consulta ele vai te retornar um array de objetos.Na 1º posição esta o 1º objeto especificado na clausula from e na 2º o 2º.
mais ou mennos assim:

Iterator foosAndBars = sess.iterate(  
        "select foo, bar from Foo foo, Bar bar " +  
        "where bar.date = foo.date"  
    );  
    while ( foosAndBars.hasNext() ) {  
        Object[] tuple = (Object[]) foosAndBars.next();  
        Foo foo = tuple[0]; Bar bar = tuple[1];  
        ....  
    }

Espero que ajude.

fiaux

Se é pra fazer assim esquece Hibernate e OO então…

B

@fiaux

Eu to usando Hibernate com xml… sabe como fazer? 8)

fiaux

http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html

L

Bom esta é uma maneira,nao disse que é melhor , mas resolve o problema relatado no titulo do topico!
Abraços.

Criado 7 de outubro de 2009
Ultima resposta 9 de out. de 2009
Respostas 6
Participantes 3