Se alguem puder me ajudar agradeco:
(sei que o texto esta confuso, mas nao consegui clarifica-lo mais que isso)
Criteria select = session.createCriteria(Operacao.class);
select.createCriteria("status")
.createCriteria("modStatus")
.add(Expression.lt("id", new Integer(900)));
uma operacao possui muitos status, cada status relaciona-se a um modstatus que possui um codigo de 1 a 1000, se a operacao possuir um status que seu modstatus seja superior a 900 ela está finalizada, desta forma, cada operacao possui muitos status com modstatus de 1 a 900 e somente um superior a 900.
gostaria que o trecho acima selecionasse apenas as operacoes que somente possuem status com modstatus inferiores a 900, no entanto o que este createCriteria acima faz e retornar duplicadamente as operacoes que tenham status com modstatus inferiores a 900.
em hql seria:
select distinct o from com.bb.proinv.Operacao as o
join o.status as st join st.modStatus as ms where ms.id<900