Galera, como faço para usar SQL no hibernate, não quero HQL…
quero fazer esta consulta:
SELECT MAX(IDALUNO) AS IDALUNO FROM ALUNOS_CADASTRO_NORMAL
Valeu galera!
Galera, como faço para usar SQL no hibernate, não quero HQL…
quero fazer esta consulta:
SELECT MAX(IDALUNO) AS IDALUNO FROM ALUNOS_CADASTRO_NORMAL
Valeu galera!
Procure pelo método createNativeQuery no EntityManager/Session
Olá,
tudo bem?
Você também pode usar o método “createQuery” na session.
No seu caso ficaria assim: “session.createQuery(‘max(idAluno) as idAluno from Alunos_cadastro_normal’)”;
Espero ter ajudado.
Abraço,
humm…
legal…
mas como eu pego o retorno de uma query como esta que você me indicou e coloco em uma variável do tipo String???
Cara,
pra colocar o resultado em uma String, basta fazer o seguinte:
String var = Integer.parseInt((Integer) session.createQuery(‘max(idAluno) as idAluno from Alunos_cadastro_normal’).uniqueResult());
Não sei se vai funcionar deste jeito, mas acredito que sim.
Att.,
Puts cara, não deu certonão deixou nem complilar!
Mas valeu, se alguém souber manda aeh!
http://docs.jboss.org/hibernate/stable/core/reference/en/html/querysql.html
Segundo a documentação, isso retorna uma lista de arrays de objetos, de tipo deduzido pelo Hibernate, assim poderá acessar sua String a partir da lista retornada, como no exemplo:
List retorno = sess.createSQLQuery("SELECT MAX(IDALUNO) AS IDALUNO FROM ALUNOS_CADASTRO_NORMAL ").list();
Object[] primeiraLinha = retorno.get(0);
Long max = (Long) primeiraLinha[0]; // Long pois a função MAX no SQL retorna um número.
e isso ai mesmo estava postando algo parecido.
Tambem funciona com variáveis primitivas?
Galera ainda não consigo!
Puts tá dando este erro:
Hibernate: SELECT MAX(IDALUNO) AS IDALUNO FROM ALUNOS_CADASTRO_NORMAL
Exception in thread “AWT-EventQueue-0” java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Integer
at telas.TelaDeAlunos.pesquisaUltimoId(TelaDeAlunos.java:2304)
at telas.TelaDeAlunos.adicionarAlunoCadNormal(TelaDeAlunos.java:2321)
Meu código está assim:
[code] public Integer pesquisaUltimoId( String sql ){//preciso arrumar esse cara
try {
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
List retorno = session.createSQLQuery("SELECT MAX(IDALUNO) AS IDALUNO FROM ALUNOS_CADASTRO_NORMAL ").list();
Object primeiraLinha = retorno.get(0);
Integer max = (Integer) primeiraLinha; // Long pois a função MAX no SQL retorna um número.
session.getTransaction().commit();
return max;
} catch (HibernateException he) {
he.printStackTrace();
return new Integer("");
}
}
public void pesquisaAlunoNormal(){
}[code]
Onde está o meu erro?
Se eu estivesse em sua pele faria isso… 8)
Parece que o Hibernate está deduzindo um BigDecimal ao invés de um Integer, modifique a linha do Cast para:
BigDecimal max = (BigDecimal) primeiraLinha;
ou
Integer max = ((BigDecimal) primeiraLinha).intValue(); // cuidado com truncamento de valores (a não ser que sua tabela tenha mais que 2^31 -1 registros, está seguro =)
Galera eu tenho a mesma dúvida, como transforma essa pesquisa sql
SELECT max(horaPrevistaReserva)FROM reserva
WHERE idReserva = (SELECT max(idReserva) FROM reserva);
em uma pesquisa HIBERNATE para usar em meu repositório. (testei no SGBD wampserve - mysql e funcionou)