Como usar Sql no hibernate?

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)