Olá pessoal,
Estou criando uma consulta usando Example. O objeto que estou usando como exemplo é composto por mais outro objeto.
Algo como
public class A {
@ManyToOne
private B objB;
//...
}
Preciso fazer join nas propriedades do objeto objB também, mas o mesmos vem da camada de apresentação e está só com o id preenchido, os demais campos são null. Vi na documentação do Hibernate que pesquisas via Criteria usando Example por padrão ignoram o identificador, considerando apenas os demais campos. Com isso, minha consulta não funciona…
Estou fazendo algo assim:
Example AExample = Example.create(objA);
Example BExample = Example.create(objA.getObjB());
return getSession().createCriteria(A.class)
.add(AExample)
.createCriteria("objB")
.add(BExample).list();
E ele não filtra nada, retorna tudo como se eu não estivesse usando o objeto da classe B como exemplo também. Se eu coloco outra propriedade do objeto B inicializada, que não seja o id, a consulta funciona perfeitamente. Mas eu não quero colocar outra propriedade! É um objeto criado unicamente para realizar a consulta, a partir de caixas de seleção na view, logo não há necessidade de inicializar todos os atributos.
Tem como fazer isso via API Example? Ou eu tenho que usar Criteria puro e ficar vendo se um parâmetro é != null, dai incluir uma restrição, ver se o próximo é != null e incluir outra restrição e assim por diante, já que quero buscar pelos ids?
Obrigado!