Problema com Criteria + @Embedded

Tenho 3 entidades: Pedido, Exame e Referencia
Sendo que Referencia está @Embedded em Exame.

DetachedCriteria mainCriteria = DetachedCriteria.forClass(Pedido.class); mainCriteria.createAlias("exame", "exame"); mainCriteria.createAlias("exame.referencia", "referencia"); mainCriteria.add(Restrictions.eq("referencia.entityId", atributo.getExameId()));

Essa criteria não funciona. Enontrei aqui no fórum mesmo ( http://www.guj.com.br/posts/list/126597.java nos últimos posts) que seria um bug do hibernate, e que usando “like” ao invés de “eq” funcionaria, mas n deu certo pra mim.
Alguma idéia?

Tenta assim:

   DetachedCriteria mainCriteria = DetachedCriteria.forClass(Pedido.class);  
  mainCriteria.createAlias("this.exame.referencia", "referencia");  
    mainCriteria.add(Restrictions.eq("referencia.entityId", atributo.getExameId()));  

Só mais uma coisa; Exame também está Embedded dentro de exame?

Não funcionou.

Mas eu tb passei o código da criteria ligeiramente errado. Na verdade o que eu tenho são exames e não exame:

DetachedCriteria mainCriteria = DetachedCriteria.forClass(Pedido.class); mainCriteria.createAlias("exames", "exames"); mainCriteria.createAlias("exames.referencia", "referencia"); mainCriteria.add(Restrictions.eq("referencia.entityId", atributo.getExameId()));

Não sei se isso pode estar influenciando

Exames é um set ou um atributo??

Exames é um atributo com setter e getter. É uma List.

Desculpa não usei a palavra atributo muito bem.

Mas no caso a restrição seria para o atributos dentro do list, não é?
Se for sua consulta ficaria assim:

DetachedCriteria mainCriteria = DetachedCriteria.forClass(Pedido.class);    
mainCriteria.createCriteria("exames", "exam");    
mainCriteria.add(Restrictions.eq("exam.referencia.entityId", atributo.getExameId()));