HIBERNATE- Realizando join no HQL utilizando uma property

Opa pessoal…

Sempre que eu realizei joins no hibernate, eram com relacionamentos que ja haviam sido mapeados pelo Hibernate Tools do eclipse, utilizando um HQL parecido com este:

select item.id.seqItemPacote, item.desItemPacote, item.valItemPacote, item.sigMoedaItemPacote,  fornecedor.nomSintet from PacoteViagemItem item left join item.fornecedor fornecedor where item.id.codOrgao=:orgao and item.id.numPacote=:pacote order by item.id.seqItemPacote

Sendo que item.fornecedor é um relacionamento MANY-TO-ONE já mapeado…

Agora oq eu preciso fazer é o seguinte…
Eu possuo o seguinte mapeamento no hibernate.

<hibernate-mapping> <class name="br.com.dsystems.ds001.models.Ds001Processo" table="ds001_processo" schema="public"> <composite-id name="id" class="br.com.dsystems.ds001.models.Ds001ProcessoId"> <key-property name="codOrgao" type="string"> <column name="cod_orgao" length="12" /> </key-property> <key-property name="numAnoProces" type="java.lang.Short"> <column name="num_ano_proces" precision="4" scale="0" /> </key-property> <key-property name="numProces" type="java.lang.Integer"> <column name="num_proces" precision="7" scale="0" /> </key-property> </composite-id> <property name="codClient" type="java.lang.Integer"> <column name="cod_client" precision="7" scale="0" not-null="true" /> </property> <property name="sigPacote" type="string"> <column name="sig_pacote" length="10" /> </property> <property name="desTituloPacote" type="string"> <column name="des_titulo_pacote" length="60" not-null="true" /> </property> <property name="sigMoedaProces" type="string"> <column name="sig_moeda_proces" length="6" /> </property> <property name="valPrecoPacote" type="big_decimal"> <column name="val_preco_pacote" precision="18" /> </property> <property name="datHoraLimiteFecham" type="timestamp"> <column name="dat_hora_limite_fecham" length="8" /> </property> <property name="numPacoteRefere" type="java.lang.Integer"> <column name="num_pacote_refere" precision="7" scale="0" /> </property> <property name="datCadast" type="timestamp"> <column name="dat_cadast" length="8" not-null="true" /> </property> <property name="codUsuariCadast" type="string"> <column name="cod_usuari_cadast" length="10" not-null="true" /> </property> <set name="ds001ProcessoItems" inverse="true"> <key> <column name="cod_orgao" length="12" not-null="true" /> <column name="num_ano_proces" precision="4" scale="0" not-null="true" /> <column name="num_proces" precision="7" scale="0" not-null="true" /> </key> <one-to-many class="br.com.dsystems.ds001.models.Ds001ProcessoItem" /> </set> <set name="ds001ProcessoHistoricos" inverse="true"> <key> <column name="cod_orgao" length="12" not-null="true" /> <column name="num_ano_proces" precision="4" scale="0" not-null="true" /> <column name="num_proces" precision="7" scale="0" not-null="true" /> </key> <one-to-many class="br.com.dsystems.ds001.models.Ds001ProcessoHistorico" /> </set> <set name="ds001ProcessoTextos" inverse="true"> <key> <column name="cod_orgao" length="12" not-null="true" /> <column name="num_ano_proces" precision="4" scale="0" not-null="true" /> <column name="num_proces" precision="7" scale="0" not-null="true" /> </key> <one-to-many class="br.com.dsystems.ds001.models.Ds001ProcessoTexto" /> </set> <set name="ds001ProcessoPassageiros" inverse="true"> <key> <column name="cod_orgao" length="12" not-null="true" /> <column name="num_ano_proces" precision="4" scale="0" not-null="true" /> <column name="num_proces" precision="7" scale="0" not-null="true" /> </key> <one-to-many class="br.com.dsystems.ds001.models.Ds001ProcessoPassageiro" /> </set> </class> </hibernate-mapping>

A property codClient se refere ao código do cliente, em que os dados estão armazenados na tabela Cliente.

Eu gostaria de realizar este join sem ter que mapear um relacionamento no arquivo hbm.xml, realizando o mesmo diretamente no HQL utilizando a property codClient…

Como eu faço isso ?
Ou eu sou obrigado a fazer o mapeamento para poder realizar o join ?

Obrigado.
Rodrigo Kerkhoff

Olá rKT, tudo bem ?
Olha pelo pouco que sei, você não é obrigado a fazer um mapeamento para fazer joins.

Eu estou em um projeto aqui na empresa, na qual estamos utilizando EJB 3.0. Nenhum relacionamento foi mapeado e estamos fazendo joins normalmente.

Abraços