Query no hibernate

1 resposta
B

Gostaria de inserir uma query de sql… mais no momento de passar o parametro e recuperar a lista nao consigo. gostaria de uma solucao q evite um mapeamento por xml.

Segue o codigo:

Na classe TbUsuario:

@Entity
@Table(name="tb_usuario"
    ,schema="public"
)

@SqlResultSetMapping(name = "sqlmap", entities = @EntityResult(entityClass = modelo.TbUsuario.class))
@NamedNativeQuery(name = "sql_query", query = "select ? from tb_usuario", resultSetMapping = "sqlmap")

Na classe DAO:

public static void buscar_todos() {
        try {
            //Cria objeto que receberá as configurações
            Configuration cfg = new AnnotationConfiguration();
//Informe o arquivo XML que contém a configurações
            cfg.configure(
                    "/hibernate/hibernate.cfg.xml");
//Cria uma fábrica de sessões.
//Deve existir apenas uma instância na aplicação
            SessionFactory sf = cfg.buildSessionFactory();
// Abre sessão com o Hibernate
            Session session = sf.openSession();
//Cria uma transação
            Transaction tx = session.beginTransaction();
// Cria objeto Aluno

            
//passagem de parametro e resultado da consulta

  




            tx.commit(); // Finaliza transação
            session.close(); // Fecha sessão



        } catch (HibernateException e1) {
            e1.printStackTrace();

        }
    }

Obrigado pela atenção de todos.

1 Resposta

Andre_JavaWorld

Como assim nao usando mapeamento xml?

para envitar o uso de xml tem como sim, voce poderia criar uma classe HibernateUtil mais ou menos assim…

public class HibernateUtil {

          private static SessionFactory factory;

          static {
                    AnnotationConfiguration cfg = new AnnotationConfiguration();
                   cfg.addAnnotatedClass(SuaEntidade1.class);
                   cfg.addAnnotatedClass(SuaEntidade2.class);
                   factory =  cfg.buildSessionFactory();
          }

          public Session getSession() {
                    return factory.openSession();
          }

}

O bloco estatico faz com que o registro das classes anotadas e inicializacao da factory sejam feitas apenas uma vez na sua aplicacao, que é quando a classe é carregada pelo ClassLoader, sempre que voce precisar de uma session, voce vai precisar fazer algo parecido com isto

Session session = new HibernateUtil().getSession();

Ja tentou usar uma nativeQuery mais ou menos desta forma?

Query consulta = manager.CreateNativeQuery("seu comando sql aqui");
consulta.getResultList();

Bons codigos!

André Martins

Obs.: qual problema esta tendo ao passar parametros?

Criado 23 de setembro de 2009
Ultima resposta 24 de set. de 2009
Respostas 1
Participantes 2