Duvida query do hibernate  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
boneazul
JavaGuru

Membro desde: 29/10/2007 17:13:59
Mensagens: 246
Offline

Pessoal to quebrando a cabeça aqui usando um HQL deve ser coisa facil mas nao to conseguindo fazer funcionar...

Tenho duas Classes Pai -> Filho 1 pai pode ter varios filhos, so que estou trabalhando com delecao logica , ou seja, tenho uma coluna ativo que é marcada como não,
so que não to conseguindo fazer um query que so traga os ativos , estou tentando



classe Pai


classe Filho



Alguem poderia me ajudar??

This message was edited 2 times. Last update was at 05/03/2010 01:09:33

[Email]
vinicius.martinez
JavaBaby

Membro desde: 03/07/2009 14:31:42
Mensagens: 94
Offline

O left join trás todos os registros , relacionados ou não..

Usa o inner join (join simples)

KISS - Keep It SIMPLE, STUPID!
fbcarvalho
Thread.start()

Membro desde: 04/02/2010 12:20:54
Mensagens: 30
Localização: Belém - PA
Offline

Mas essa sua query está trazendo todos ou nenhum dos itens ativos? Você poderia postar mais detalhes do mapeamento (tipo do atributo ativo, etc...)
vinicius.martinez
JavaBaby

Membro desde: 03/07/2009 14:31:42
Mensagens: 94
Offline

Troque isso:



Por isso:




KISS - Keep It SIMPLE, STUPID!
boneazul
JavaGuru

Membro desde: 29/10/2007 17:13:59
Mensagens: 246
Offline

vinicius.martinez wrote:Troque isso:



Por isso:





Oww rapaz funcionou era isso mesmo!! Brigadão pela ajuda!!!
[Email]
boneazul
JavaGuru

Membro desde: 29/10/2007 17:13:59
Mensagens: 246
Offline

Putz essa query ta ficando cada veis mais nervosa a resposta de cima funcionou beleza so que tem mais uma classe ainda que eu preciso ordenar os resultados
porque ainda 1 filho pode ter varios brinquedos e cada um tem a ordem em que eles devem ser guardados ai tentei continuar a query utilizando abaixo.



Mas dai levei uma exception na cara..
Exception in thread "main" org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags

Alguem se habilita?? Sou novo no uso de hibernate e to me enroscando bastante com relacionamento...
Vo postar as classes pra ver se alguem me ajuda

Basicamente preciso de um select da classe principal pai em que ele busque todos os filhos ativos e todos os brinquedos ativo ordenados pela ordem em que são guardados..

Pq vo correr dentro dele














[Email]
Lavieri
GUJ Master
[Avatar]

Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline

Ve q cuticuti fazendo com criteria...




easy way em ?


agora com comentarios...

This message was edited 2 times. Last update was at 05/03/2010 21:36:13


Sun Certified Java Programmer (SCJP 6)

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999

Meu blog -> http://blog.tomazlavieri.com.br/
[ICQ]
boneazul
JavaGuru

Membro desde: 29/10/2007 17:13:59
Mensagens: 246
Offline

Lavieri wrote:Ve q cuticuti fazendo com criteria...




easy way em ?


agora com comentarios...



Mas mesmo assim ainda ta faltando coisa nessa criteria...
Ainda faltou relacionar filho com brinquedos ativos ordenados pela ordem..

[Email]
Lavieri
GUJ Master
[Avatar]

Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline

.addOrder(Order.asc("nome da propriedade")

vc pode inclusve adicionar várias ordens...




Obs.... se o que vc quer, é que a lista de Filha -> Neto seja ordenado, vc pode fazer assim



This message was edited 1 time. Last update was at 06/03/2010 19:48:46


Sun Certified Java Programmer (SCJP 6)

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999

Meu blog -> http://blog.tomazlavieri.com.br/
[ICQ]
boneazul
JavaGuru

Membro desde: 29/10/2007 17:13:59
Mensagens: 246
Offline

Lavieri wrote:.addOrder(Order.asc("nome da propriedade")

vc pode inclusve adicionar várias ordens...




Obs.... se o que vc quer, é que a lista de Filha -> Neto seja ordenado, vc pode fazer assim





Humm agora foi em lavieri a solucao era esse ordem na collection mesmo..brigadão pela ajuda..

Se sabe me explicar porque o hibernate nao faz 2 fetch inner join...pois parece ser algo tão normal..

1 Pai -> N Filho ---- 1 Filho -> N Brinquedos

Outra coisa estranha que não entendi... porque eu preciso usar esse fetch pra falar pra eles colocar dentro das classes o que foi passado na query...

A query em si ja não bastaria ? Ele nao teria de popular de acordo com a query realizada??

Por exemplo :


Porque ele nao aceita isso ?? Quando eu usava um framework ORM pra php no caso eu passa o HQL e ele populava as classes certinho de acordo com a query passada...
Não entendi muito bem qual a do hibernate em relação a isso e porque preciso dos fetch e porque ele nao aceita 2 fetch na mesma query...

Alguem saberia me explicar??

This message was edited 1 time. Last update was at 08/03/2010 01:17:34

[Email]
Lavieri
GUJ Master
[Avatar]

Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline

O Hibernate não aceito duplos fechs....

isso é uma regra dele... ele não popula 2 relacionamentos diferentes de 1 pra muitos....

o motivo real disso eu não sei...


a saber:

popular 1-N é bem perigoso e pode causar transtornos...

vc pode escolher que campos buscar em uma consulta, e como popular um objeto com eles

eu não uso 1-N, não uso pq causa tantos problemas, que não caberia listar nesse post, já li em diversos lugares pra não fazer isso, ja achei que em alguns casos eu deveria fazer, e sempre, inevitavelmente, eu me arrepdendi de ter usado, e parei...


.........


apesar de vc não conseguir fazer o que queria.... conseguria listar todos os NETOS, e fazer fecht nele até o pai, e essa sim seria uma abordagem coerente.... mas o contrario o hiberante julga perigoso...


Sun Certified Java Programmer (SCJP 6)

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999

Meu blog -> http://blog.tomazlavieri.com.br/
[ICQ]
boneazul
JavaGuru

Membro desde: 29/10/2007 17:13:59
Mensagens: 246
Offline

Lavieri wrote:O Hibernate não aceito duplos fechs....

isso é uma regra dele... ele não popula 2 relacionamentos diferentes de 1 pra muitos....

o motivo real disso eu não sei...


a saber:

popular 1-N é bem perigoso e pode causar transtornos...

vc pode escolher que campos buscar em uma consulta, e como popular um objeto com eles

eu não uso 1-N, não uso pq causa tantos problemas, que não caberia listar nesse post, já li em diversos lugares pra não fazer isso, ja achei que em alguns casos eu deveria fazer, e sempre, inevitavelmente, eu me arrepdendi de ter usado, e parei...


.........


apesar de vc não conseguir fazer o que queria.... conseguria listar todos os NETOS, e fazer fecht nele até o pai, e essa sim seria uma abordagem coerente.... mas o contrario o hiberante julga perigoso...



Nossa num sabia desse problema em relacionamentos 1-N, mas como voce resolveria sem esses relacionamentos 1-N , tem algum material que voce indicaria??
[Email]
Lavieri
GUJ Master
[Avatar]

Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline

Nao sei bem te indiciar... eu ja li EJB in Action... e gostei...

de mais a mais, vc so precisa lembrar de popular apenas o lado sem o mappedBy, assim vc protege bem sua aplicacao ...

por exemplo


Pais 1->N Estado -> 1-N Cidade -> 1-N Bairro


em vez de vc criar os relacionamentos 1-N ... vc so escreve a outra ponta, o N-1







quando precisa do getBairros de uma cidade.... vc faz o seguinte...

"select from Bairro b where b.cidade = :cidade" e pronto

This message was edited 1 time. Last update was at 08/03/2010 16:37:42


Sun Certified Java Programmer (SCJP 6)

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999

Meu blog -> http://blog.tomazlavieri.com.br/
[ICQ]
boneazul
JavaGuru

Membro desde: 29/10/2007 17:13:59
Mensagens: 246
Offline

Lavieri wrote:Nao sei bem te indiciar... eu ja li EJB in Action... e gostei...

de mais a mais, vc so precisa lembrar de popular apenas o lado sem o mappedBy, assim vc protege bem sua aplicacao ...

por exemplo


Pais 1->N Estado -> 1-N Cidade -> 1-N Bairro


em vez de vc criar os relacionamentos 1-N ... vc so escreve a outra ponta, o N-1







quando precisa do getBairros de uma cidade.... vc faz o seguinte...

"select from Bairro b where b.cidade = :cidade" e pronto


Um entendi sua ideia em relacao ao mapeamento !! Obrigado pela explicação!!!
[Email]
boneazul
JavaGuru

Membro desde: 29/10/2007 17:13:59
Mensagens: 246
Offline

boneazul wrote:
Lavieri wrote:Nao sei bem te indiciar... eu ja li EJB in Action... e gostei...

de mais a mais, vc so precisa lembrar de popular apenas o lado sem o mappedBy, assim vc protege bem sua aplicacao ...

por exemplo


Pais 1->N Estado -> 1-N Cidade -> 1-N Bairro


em vez de vc criar os relacionamentos 1-N ... vc so escreve a outra ponta, o N-1







quando precisa do getBairros de uma cidade.... vc faz o seguinte...

"select from Bairro b where b.cidade = :cidade" e pronto


Um entendi sua ideia em relacao ao mapeamento !! Obrigado pela explicação!!!



Mas ainda restou uma ultima duvida.

Se eu precisasse saber a partir de uma pais todas as cidades ? Não teria como teria??
e se eu tivesse uma relação pro usuario que faça uma treeview com isso tudo?? descartando uso de ajax é claro.

Como ficaria por nao tenho a parte onetomany.

entao nao conseguiria usar



Ou seja me traga tudo relacionado a 1 pais com id tal

e a treeview ficasse assim

BRASIL
|---------SÃO PAULO
|---------------CENTRO
|---------------LAVAPÉS
|
|---------RIO DE JANEIRO
|---------------GAVIA
|---------------COPACABANA


isso fazendo analogia a outras classes , como voce resolveria?

Voce cria uma classe intermediaria e 3 querys?

Pq precisaria saber se brasil esta ativo
Ai quais cidades do brasil esta ativa
Ai qual bairro da cidade esta ativa







This message was edited 1 time. Last update was at 11/03/2010 18:50:23

[Email]
 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team