Hibernate - join na mesma table e/ou forçar criterios [resolvido]

e ai povo!!

salve!

então… primeiramente feliz pascoa à todos

seguinte… em um determinado momento da minha aplicação preciso recuperar do banco alguns objetos, no entanto, preciso de um criterio um tanto quanto diferente.

bom… pense no seguinte
estamos trabalhando com grupos e inclusive existe um grupo default
entaum preciso recuperar do banco todos os objetos que estão nos outros grupos mas não estão no grupo default
que seriam as sobras

ficaria mais ou menos assim:
Code:

"select * from Objeto o left join Objeto ob on ob.tela = o.tela and ob.objeto = o.objeto “and ob.grupo is null where o.grupo is not null and ob.id is null”

isso funciona perfeitamente no mysql, porem no hibernate não, pois ele não me permite definir as clausulas no join.
existem alguma outra forma de fazer isso, redefinir as clausulas do join, colocar um set dento do meu hbm ou seilá… sem usar sql nativo? do contrário não me adiantaria usar hibernate :roll:

se alguem já passou por um probema parecido, please help-me…

[]'s

Não entendi muito bem o que vc quer, mas vê se esse link ajuda:
http://www.hibernate.org/hib_docs/v3/reference/en/html/queryhql.html#queryhql-joins

[]'s

Rodrigo C. A.

Aproveite o embalo e veja para que não serve este forum:
http://www.guj.com.br/posts/list/12234.java

[quote=LIPE]Aproveite o embalo e veja para que não serve este forum:
http://www.guj.com.br/posts/list/12234.java[/quote]

ok lipe… foi mal… se puder mover o post para o lugar adequado…

[quote=Rodrigo Carvalho Auler]
Não entendi muito bem o que vc quer, mas vê se esse link ajuda:
http://www.hibernate.org/hib_docs/v3/reference/en/html/queryhql.html#queryhql-joins

[]'s

Rodrigo C. A. [/quote]

quanto a minha duvida é o seguinte…
preciso fazer um join com o hibernate determinando quais as clausulas do meu join

no meu caso preciso verificar se na mesma tabela existem itens em um determinado grupo que não existem em outro. por isso o “id is null” que seria o que ele me retornaria: nada.

já fui ao forum do hibernate e lá me recomendaram o uso do session.createSQLQuery(""); mas no meu caso não adiantaria, pois preciso de independencia de DB… enfim… acho que vou esperar um outro relase do hibernate neste caso… rs…
obrigado…
se alguem tiver outra sugestão, estou aceitando =]

Hum, não se se entendi direito, mas isso aqui não resolve?

select * from Pessoa p left join p.documentacao doc
where p.tela = doc.tela and doc.grupo is null and p.grupo is not null and doc.id is null

quase isso!! resolveria se eu tivesse uma referencia da tabela para ela mesma (um set) mas eu não tenho e não há necessidade de colocar um pois só preciso disso neste momento e em nenhum outro.

vamos ver se consigo explicar melhor:

preciso fazer um consulta com join na mesma tabela porém preciso deixar explícitas as minhas cláusulas do join.
sei que o hibernate se orienta pelas minhas PKs e FKs… será que há um jeito, sem ser com sql nativo, de se fazer isso? vi no help que posso utilizar classes auxiliadoras pra fazer isso… sem que sejam pojos… mse será que precisar ser tção complexo assim?? (não que meu problema seja menos neh… )

[]'s

Entendi.

E não entendo a diferença entre colocar algo na cláusula do join e no where.

Declare o relacionamento com a própria tabela:

##Modulo.hbm.xml

<class name="Modulo" table="tModulos">
	...
	<property name="parentId" column="IDparent"/>
	<bag lazy="true" name="childs" inverse="true"
			table="tModulos" cascade="none">
		<key column="IDparent"/>
		<one-to-many class="Modulo" />
	</bag>
</class>
from Modulo m join m.childs child  where
m.tela = child.tela and m.objeto = child.objeto and child.grupo is null and m.grupo is not null and child.id is null

valeu lipe… vou testar… se num der certo eu volto =]

e ai pessoal… achei uma solução…
primeiro:

para se fazer masi condições num join com hibernate usa-se “with” logo após o join:

from Tabela t left join t.Tabela2 t2 with t.campo = t2.campo where....

outra coisa que fiz foi criar um pojo de consulta com todas as propriedades que meu pojo original tem, somente modificando como read-only (mutable=“false” na assinatuda do meu hbm)…
=]
ok??
espero ter contribuido…
valeu povo…
falow…