Hibernate Criteria

6 respostas
C

Galera, sou desenvolvedor web e sempre usei SQL puro, agora me pediram para fazer uma aplicação com Criteria e to perdidão!
tem como fazer a seguinte pesquisa usando criteria?

e onde encontro um manual basicão explicando com exemplos de SQL como funciona o Criteria
??

Valeu :slight_smile:

6 Respostas

wagner_a_lima

Mas será que você realmente prescisa utilizar criteria? Você consegue realizar essa consulta com HQL simples.

public Integer getMaxValue(){ 
     Session sessao = HibernateUtil.getSession();  
     Transaction tx = sessao.beginTransaction();  
     Query query = sessao.createQuery("select max(ent.sequencia) from Entidade ent where ent.EntidadeArquivoRemessa.id = :id");
     query.setParameter("id", 5);
     tx.commit();  
     sessao.close();  
     return (Integer)query.singleResult();      
}
marcusmage

caina27 usando A API Criteria sua consutla ficaria algo do tipo:

List  result = session.createCriteria(ArquivoRemessa.class)

.add(Projections.max(sequencia))

.add(Reestrictions.eq(codarquivo_remessa, 5).list();

Isso é claro que deve respeitar o seu mapeamento das entidades.

Vale lembra que para usar isso com JPA vc teria que utilizar o metodo getDelegate() para obter uma Session do Hibernate.(Se estiver usando a implementação do Hibernate).

Espero ter ajudado.

Lavieri

Apenas lembrando… o que o colega acima colocou esta correto…

mais como há um Projection de max… o resultado é sempre unique… e retorna o valor maximo do campo sequencia… e caso seja um número inteiro daria pra fazer assim

Integer result = session.createCriteria(ArquivoRemessa.class)

.add(Projections.max(sequencia))

.add(Reestrictions.eq(codarquivo_remessa, 5).uniqueResult();
C

Valeu galera! já to pegando a manha do Criteria! auhauahua
mas tem como eu pegar o máximo codarquivo_remessa e setar o sequencia correspondente a ele e seta-lo como 1?

to tentando mas to me frustrando aqui :frowning:

valeu :smiley:

Lavieri

Não entendi o que extamente vc ker...

mais c vc ker pegar o Objeto correspondende akele criterio anterior... basta

Integer result = session.createCriteria(ArquivoRemessa.class) 
.add(Projections.max("sequencia")) 
.add(Reestrictions.eq("codarquivo_remessa", 5).uniqueResult(); 

session.load(ArquivoRemessa.class, result);
C

Consegui :smiley: Valeu pessoal!!!
só fiz um .save :slight_smile:

hehehe
farô 8)

Criado 7 de abril de 2009
Ultima resposta 7 de abr. de 2009
Respostas 6
Participantes 4