Case ELSE no criteria

5 respostas
A

Senhores,

sou iniciante em persistencia… alguem pode me ajudar me informando como passo pro critéria o campo:

case when CAMPO1 isnull then CAMPO2 else CAMPO1 end

obg

5 Respostas

Kanin_Dragon

Jovem,
Faça desta forma:

if(campo1==null)
  criteria.add(Restrictions.eq("campo2",valor2));
else
  criteria.add(Restrictions.eq("campo1",valor1));

Abs

I

Explica melhor o que seria esse case que vc quer fazer, se possível posta o método em criteria que vc precisa adicionar esse case

Edit: Kanin praticamente já respondeu, tinha pensado nisso também, só pedi pra vc expecificar melhor pra ter certeza de que era isso que vc precisava

A

seguinte… tenho uma consulta cde 2 tabelas… se o fornecedor nao for cadastrado(campo1 = null) me retorna o cnpjdele que tem na outra tabela (campo2), para que o usuario saiba que aquele fornecedor nao tem cadastro.

na verdade eu tenho varios case else em minhas consultas…como nao sei fazer coloquei um exemplo simples…

segue uma consulta que eu preciso passar pro criteria, por exemplo…

strsql = “SELECT a.DT,”

  • “a.COD_CONTA,”
  • “a.FORNECEDOR CNPJ_FORNEC,”
  • “a.ORCADO,”
  • “a.GASTO,”
  • “a.CT_CUSTO,”
  • “a.EMPRESA,”
  • “TBRJ_CAD_CT_CUSTO.NM_CT_CUSTO,”
  • “TBRJ_CAD_CT_CUSTO.EMPRESA,”
  • “TBRJ_CAD_CT_CUSTO.FILIAL,”
  • “TBRJ_CAD_CONTAS.CONTA,”
  • "IFNULL(TBRJ_CAD_FORNECEDOR.FORNECEDOR,TBRJ_CAD_FORNECEDOR.CNPJ_FORNEC) FORNECEDOR "
  • “FROM (SELECT DT,”
  • “COD_CONTA,”
  • “FORNECEDOR,”
  • “VALOR ORCADO,0 GASTO,”
  • “CT_CUSTO,”
  • "EMPRESA "
  • "FROM TBRJ_ORC_PROJETADO "
  • “UNION ALL SELECT DT,”
  • “COD_CONTA,”
  • “CNPJ_FORNEC,”
  • “0,(CASE WHEN TP_LANC =‘C’ THEN VALOR ELSE -VALOR END) GASTO,”
  • “CENTRO_CUSTO,”
  • "COD_EMPRESA "
  • "FROM TBRJ_DESPESAS ) a "
  • "INNER JOIN TBRJ_CAD_CONTAS ON a.COD_CONTA = TBRJ_CAD_CONTAS.COD_CONTA "
  • "LEFT JOIN TBRJ_CAD_CT_CUSTO ON a.CT_CUSTO = TBRJ_CAD_CT_CUSTO.CT_CUSTO "
  • "LEFT JOIN TBRJ_CAD_FORNECEDOR ON a.FORNECEDOR = TBRJ_CAD_FORNECEDOR.CNPJ_FORNEC "
  • "WHERE a.CT_CUSTO LIKE ‘8%’ AND EXTRACT(YEAR_MONTH FROM DT)=:mes "
  • "ORDER BY DT DESC ";
I

É você vai ter um trabalhinho bacana pra fazer isso em Criteria, pesquise e estude sobre Restrictions e Projection em Criteria.

Abraço

A

o meu problema maior é estas condições no campo um exemplo:

,(CASE WHEN TP_LANC =‘C’ THEN VALOR ELSE -VALOR END) GASTO

…se o valor do registro é credito ou débito(valor positivo ou negativo), é definido no campo TP_LANC

COMO eu passo isso no critéria??

Criado 24 de maio de 2011
Ultima resposta 24 de mai. de 2011
Respostas 5
Participantes 3