Hibernate Criteria acessar um atributo de outra classe

3 respostas
smorigo

Boa noite pessoal estou tentando fazer uma pesquisa onde tenho que acessar um atributo que esta localizado em outra classe, o criteria não tem capacidade de fazer isso ?

O que estou tentando fazer:

Criteria criteria = session.createCriteria( Pedido.class );
criteria.add(Expression.like("importador.nomeCompleto", informacaoPesquisa+"%" ));

obrigado!

3 Respostas

aoqfonseca

Qual é a relação entre o Importador e o Pedido ?
Se for uma relaçao 1:1 no seu criteria bastaria usar

criteria.add(Expression.like("pedido.importador.nomeCompleto", informacaoPesquisa+"%" ));

Passe mais detalhes para que possamos ajudar

C

Saindo um pouco do critéria…
Poderiam me ajudar na seguinte consulta?

Em sql…

SELECT
LPN.ID_LINHA_PROMOCAO,
LPN.COD_PROMOCAO,
PROMO.DES_PROMOCAO,
OBSERVACAO,
DTC_INICIO,
DTC_FINAL,
DTC_ATIVACAO
FROM
LINHA_PROMOCAO_NOVA LPN,
PROMOCAO PROMO,
LINHA_PROMOCAO_PREMIO LPP,
ATIVACAO ATIV
WHERE PROMO.COD_PROMOCAO=LPN.COD_PROMOCAO
AND LPP.ID_LINHA_PROMOCAO(+)=LPN.ID_LINHA_PROMOCAO
AND ATIV.ID_LINHA_PROMOCAO(+)=LPN.ID_LINHA_PROMOCAO

Em HQL…

select 
        lpn.codPromocao, 
        promo.desPromocao, 
        promo.observacao, 
        promo.dtcInicio, 
        promo.dtcFinal,  
        at.dtcAtivacao 
        from 
        LinhaPromocaoNova as lpn  left join lpn.linhaPromocaoPremios as lpp, 
        Ativacao at ,
        Promocao as promo 
        where 
        promo.codPromocao=lpn.codPromocao

O promlema é que ainda n domino o left join do HQL e o campo “at.dtcAtivacao” só deveria está preenchido em um único registro e não todos da consulta.

Desde já agradeço.

marciobarroso

cbarreto:
Saindo um pouco do critéria…
Poderiam me ajudar na seguinte consulta?

Em sql…

SELECT
LPN.ID_LINHA_PROMOCAO,
LPN.COD_PROMOCAO,
PROMO.DES_PROMOCAO,
OBSERVACAO,
DTC_INICIO,
DTC_FINAL,
DTC_ATIVACAO
FROM
LINHA_PROMOCAO_NOVA LPN,
PROMOCAO PROMO,
LINHA_PROMOCAO_PREMIO LPP,
ATIVACAO ATIV
WHERE PROMO.COD_PROMOCAO=LPN.COD_PROMOCAO
AND LPP.ID_LINHA_PROMOCAO(+)=LPN.ID_LINHA_PROMOCAO
AND ATIV.ID_LINHA_PROMOCAO(+)=LPN.ID_LINHA_PROMOCAO

Em HQL…

select 
        lpn.codPromocao, 
        promo.desPromocao, 
        promo.observacao, 
        promo.dtcInicio, 
        promo.dtcFinal,  
        at.dtcAtivacao 
        from 
        LinhaPromocaoNova as lpn  left join lpn.linhaPromocaoPremios as lpp, 
        Ativacao at ,
        Promocao as promo 
        where 
        promo.codPromocao=lpn.codPromocao

O promlema é que ainda n domino o left join do HQL e o campo “at.dtcAtivacao” só deveria está preenchido em um único registro e não todos da consulta.

Desde já agradeço.

Que coisa mais feia …

Crie vc um tópico …

[ :smiley: ]

Criado 28 de março de 2006
Ultima resposta 7 de abr. de 2006
Respostas 3
Participantes 4