Como fazer esta consulta com Hibernate

Pessoal,

Estou com uma dúvida num relacionamento many-to-many no Hibernate.

Tenho uma Classe Cliente e uma Caracteristicas: um Cliente pode ter varias Caracteristicas e uma Caracteristica pode estar em vários Clientes. Faço esta associação através da classe Cliente usando dois “ListBox” com as Caracteristicas disponíveis e as já associadas.

O que tenho feito é obter todas as Caracteristicas e excluir as já associadas ao Cliente.

O que eu gostaria de fazer para melhorar a performance é obter via Hibernate as Caracteristicas disponiveis diretamente. Tipo

Select * from Caracteristicas 
Where not exists (Select IdCliente 
                           from Cliente_Caracteristica 
                           Where IdCliente = parametroIdCliente and Caracteristica.Id = Cliente_Caracteristica ) 

Só que quero fazer isto usando recursos do Hibernate, se possível, de forma mais elegante.

Olá Nilson Costa

 Tenta fazer por criteria.... pode ficar melhor!!
  veja esses exemplos [url=http://www.hibernate.org/hib_docs/v3/api/org/hibernate/Criteria.html] HIBERNATE CRITERIA[/url]

flwsss
espero ter ajudado

thiago,

Grato pelo retorno.
Eu conheço a Criteria do Hibernate, embora não seja um usuário avançado.
Mas não vejo como fazer a query sem referenciar a tabela de relacionamento.

Exemplo:

Cliente----------ClienteCaracteristica------------Catacteristica (many-to-many)

Como buscar as caracteristicas que ainda não estão relacionadas(associadas) ao cliente de maneira “OO” ou da melhor maneira possível?