Retornando EntityManager do Hibernate

4 respostas
Jedi_FeniX

Como eu posso executar um consulta, utilizando o EntityManager do Hibernate?
Por exemplo:

select (count(id) / 5) as "total1", count(id) from tableA;

O meu código está assim:

Map<String, Integer> map = new HashMap<String, Integer>();
        String sql = "select (count(id) / 5) as "total1", count(id) from tableA;";
        EntityManager em = this.getEntityManager();

        try {
           map = em.createNativeQuery(sql, HashMap.class).getResultList();
        } finnally {
           em.close();
        }

        return map;
Sendo que eu gostaria que o nome do campo fosse a key do map. Teria como fazer isso?

4 Respostas

Mero_Aprendiz
Jedi_FeniX:
Como eu posso executar um consulta, utilizando o EntityManager do Hibernate? Por exemplo:
select (count(id) / 5) as "total1", count(id) from tableA;

O meu código está assim:

Map<String, Integer> map = new HashMap<String, Integer>();
        String sql = "select (count(id) / 5) as "total1", count(id) from tableA;";
        EntityManager em = this.getEntityManager();

        try {
           map = em.createNativeQuery(sql, HashMap.class).getResultList();
        } finnally {
           em.close();
        }

        return map;
Sendo que eu gostaria que o nome do campo fosse a key do map. Teria como fazer isso?
Olá... Faz assim:
select new map(objeto.atributo as alias1, objeto.atributo2 as alias2) from Objeto objeto

Dá uma olhadinha nesse link aqui, paginas 6 e 7:
[url]http://www.metaarchit.com/hibernate_tutorials/Hibernate%20Tutorial%2009.pdf[/url]

[]'s
JL

Jedi_FeniX

Não entendi muito bem a sua resposta poderia explicar melhor? Lembrando que eu estou querendo rodar um sql nativo.

E corrigindo a query que quero rodar é esta:

É uma procedure que retorna dos campos integers.

Mero_Aprendiz

Jedi_FeniX:
Não entendi muito bem a sua resposta poderia explicar melhor? Lembrando que eu estou querendo rodar um sql nativo.

E corrigindo a query que quero rodar é esta:

É uma procedure que retorna dos campos integers.

Certo, desculpe a falta de explicação.
Sobre o retorno de querys em forma de maps do Hibernate, basta apenas que você utilize assim:

Onde new map indica que o retorno é um mapa, objeto.atributo as alias1 indica o atributo do objeto como valor e o alias1 com chave do valor no mapa.
O erro em minha resposta foi ter lido em.createQuery ao invez de em.createNativeQuery
Não sei bem se de um retorno de uma procedure o hibernate pode retornar um mapa.
Em uma consulta rapida não consegui nem um resultado que atenda…

[]'s
JL

Jedi_FeniX

Estou querendo fazer a seguinte query:

Agora usando createQuery…

Mas quando tento pegar o List desta query, recebo o seguinte erro de type casting

java.lang.ClassCastException: [Ljava.lang.Object;

O meu código está assim:

try {
   List<User> list = (List<User>) em.createQuery("nameQuery").getResultList();
} finally {
   em.close()
}
Criado 16 de março de 2009
Ultima resposta 18 de mar. de 2009
Respostas 4
Participantes 2