rodpuc
Outubro 13, 2010, 1:19pm
#1
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?
rodpuc
Outubro 13, 2010, 2:54pm
#3
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??
rodpuc
Outubro 13, 2010, 2:58pm
#5
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()));