| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2010 13:27:11
|
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
- |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2010 13:42:45
|
thiago.correa
GUJ Master
![[Avatar]](/images/avatar/c37f9e1283cbd4a6edfd778fc8b1c652.jpg)
Membro desde: 26/03/2006 18:54:30
Mensagens: 1861
Offline
|
|
---
"Se não puder ajudar, atrapalhe, afinal de contas o importante é participar!"
Thiago
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2010 13:56:59
|
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
- |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2010 14:01:49
|
thiago.correa
GUJ Master
![[Avatar]](/images/avatar/c37f9e1283cbd4a6edfd778fc8b1c652.jpg)
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
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2010 14:23:46
|
fabiofalci
GUJ Master
![[Avatar]](/images/avatar/c359889a833e7612e0cff1dc69d272bc.png)
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.
|
|
|
 |
|
|