| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/11/2009 15:19:29
|
bruno_cobra
JavaTeenager
Membro desde: 08/04/2007 23:59:14
Mensagens: 194
Localização: Lajeado, RS
Offline
|
Utilizando Criteria, é possível atribuir mais de uma condição numa associação LeftJoin?
Sempre que utilizo Criteria para fazer a associação, a mesma é feita diretamente pelo id do campo, mas eu precisaria adicionar um OR à condição.
Atualmente, minha consulta acaba ficando assim:
No entanto, eu preciso que fique desta forma:
Já pesquisei muito há respeito, li a documentação, e não encontrei absolutamente nada para este caso. Alguém tem alguma ideia? Obrigado.
|
http://blog.brunozambiazi.com
- |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/11/2009 16:54:21
|
almocreverson
Entusiasta Java
Membro desde: 25/11/2009 10:46:17
Mensagens: 16
Offline
|
Bruno, vc poderia postar o código do objeto Produto e o Criteria que você está montando para gerar essa sua consulta atual?
Não mexo com consultas usando criteria há um bom tempo, mas acredito que eu possa te ajudar com isso.
EDIT:
além disso, poderia explicar melhor o que exatamente você quer que sua consulta retorne?
Digo, essa 2a consulta que você postou (a consulta desejada) dá exatamente o mesmo resultado que um simples " select prod.* from produtos prod", não?
This message was edited 1 time. Last update was at 27/11/2009 22:32:58
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/11/2009 13:57:10
|
bruno_cobra
JavaTeenager
Membro desde: 08/04/2007 23:59:14
Mensagens: 194
Localização: Lajeado, RS
Offline
|
A única coisa que preciso é adicionar uma condição à cláusula de junção da consulta. É só olhar as duas consultas para notar que a diferença deve ocorrer após o LeftJoin.
A minha classe, de forma simplificada, está assim:
A consulta está assim:
|
http://blog.brunozambiazi.com
- |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/11/2009 15:40:54
|
almocreverson
Entusiasta Java
Membro desde: 25/11/2009 10:46:17
Mensagens: 16
Offline
|
Bom, me perdoe se eu estiver viajando.
O resultado que você espera é equivalente ao que você teria com o seguinte criteria
Criteria crit = sess.createCriteria( Produto.class, "prod" );
caso seu fetch no campo pai da classe Produto fosse FetchType.EAGER, isso?
Trocar esse "crit.createCriteria( "prod.pai", "pai", CriteriaSpecification.LEFT_JOIN ); " por um "crit.setFetchMode(...,...);" não resolveria o seu problema?
Reforço novamente o que disse no início: me perdoe se eu estiver viajando.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/12/2009 13:25:50
|
bruno_cobra
JavaTeenager
Membro desde: 08/04/2007 23:59:14
Mensagens: 194
Localização: Lajeado, RS
Offline
|
Valeu pela tentativa de ajuda, mas acho que está viajando sim.
O que eu preciso não é modificar a forma de join. O que eu preciso é simplesmente adicionar uma cláusula condicional à cláusula de junção (que o Hibernate gera como padrão para fazer a associação).
|
http://blog.brunozambiazi.com
- |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/12/2009 16:14:14
|
almocreverson
Entusiasta Java
Membro desde: 25/11/2009 10:46:17
Mensagens: 16
Offline
|
Bom, exatamente isso que você está pedindo (uma cláusula adicional no Left Join) realmente eu não sei como fazer.
Pra dificultar ainda mais, não estou com nenhuma aplicação que use hibernate rodando na minha máquina, então fica complicado de fazer para verificar se funciona, e só depois postar.
Mas agora resolver isso é questão de honra (e de diversão, pelo desafio de domar o terrível hibernate)
Bruno, vamos voltar ao começo.
Você poderia me explicar, em palavras, o que você precisa fazer?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/01/2010 17:29:32
|
mwaka
What is classpath?
Membro desde: 05/03/2008 08:52:00
Mensagens: 6
Localização: São Paulo, SP
Offline
|
é algo como
criteria.add(Restrictions.isNull("cd_produto_superior "));
tem um negócio de conjunction e disjunction tb q eu não me lembro agora mas que serio o "e" e o "ou"
|
Você é o que você faz do que os outros fazem com você. |
|
|
 |
|
|