[Criteria] Múltiplos AND/OR  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
bruno_cobra
JavaTeenager

Membro desde: 08/04/2007 23:59:14
Mensagens: 194
Localização: Lajeado, RS
Offline

E aí galera!

Seguinte: posso uma consulta que preciso "converter" para Criteria. A consutla original tem a seguinte cláusula:

O problema é que a parte do OR pode possuir variações, pois deve ser montado através de parâmetros passados pelo usuário. Ou seja, as duas cláusulas OR poderiam ser, em outros casos, 10, 50 ou qualquer outro número...

Até consigo fazer isso com o Criteria, o problema é que o método Restrictions.or aceita apenas dois critérios como argumentos, então gostaria de saber: alguém sabe uma forma "inteligente" e elegante de fazer essa condição com múltiplos OR?

Aguardo sugestões. Obrigado.

This message was edited 1 time. Last update was at 08/04/2010 13:27:51


http://blog.brunozambiazi.com
-
[WWW]
thiago.correa
GUJ Master
[Avatar]

Membro desde: 26/03/2006 18:54:30
Mensagens: 1861
Offline


---
"Se não puder ajudar, atrapalhe, afinal de contas o importante é participar!"
Thiago
[MSN]
bruno_cobra
JavaTeenager

Membro desde: 08/04/2007 23:59:14
Mensagens: 194
Localização: Lajeado, RS
Offline

Obrigado pela tentativa de ajuda, mas não é disso que preciso.

Se verificares o exemplo de SQL que coloquei, possuo sempre duas condições em um AND (ex.: id_caracteristica = X and tx_valor = Y), sendo que esta condição composta passa a compor um OR que pode ter o número de cláusulas variável (ou seja, o 10 e o 50 não tem nada a ver com o valor de uma propriedade, mas sim da quantidade de OR que posso ter).
Além disso, o seu uso do Restrictions.or me parece bastante incorreto, uma vez que este método recebe apenas o objeto Criterion.

Sobre o IN, não me traria os resultados que preciso. Estou resolvendo utilizando o método Restrictions.sqlRestriction().

Valeu.

http://blog.brunozambiazi.com
-
[WWW]
thiago.correa
GUJ Master
[Avatar]

Membro desde: 26/03/2006 18:54:30
Mensagens: 1861
Offline

Realmente, olhei a documentação me passei e o uso do or do jeito que propus está errado!

Quanto ao uso do in eu entendi que você queria uma faixa de valores.

Acho que o uso do sqlRestriction ou até mesmo o uso de sql mesmo para esse caso acho o melhor, do que tentar fazer fica criteria!

---
"Se não puder ajudar, atrapalhe, afinal de contas o importante é participar!"
Thiago
[MSN]
fabiofalci
GUJ Master
[Avatar]

Membro desde: 11/04/2006 09:23:14
Mensagens: 1057
Localização: Porto Alegre - RS
Offline

Quando vc tiver todos os AND, basta fazer algo assim (por exemplo com 3):

Sendo que, se vc receber uma lista de AND com tamanho variado, vc pode fazer um loop que vai fazendo OR no Criterion anterior.
[WWW] [MSN] [ICQ]
 
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Ir para:   
Powered by JForum 2.1.8 © JForum Team