Pessoal
Preciso fazer uma tela de busca no banco de dados, isto é, uma tela onde eu preencho os dados que eu quero que tenha nas entidades que vou pesquisar e mando fazer a busca.
Como os atributos e entidades a serem utilizados nas buscas podem variar, usar SQL nativa ou criar named queries não é uma boa abordagem.
Pensei em utilizar criterion/example, mas deparei com o seguinte problema. Imagine que isso represente as minhas classes:
A —> B —> C —> D onde as letras sao as classes e as setas são associações one to many;
eu gostaria de poder buscar elementos A nos quais d.cor = “laranja”. Então, me baseando no último exemplo da pag 682 do livro Java Persistence with Hibernate eu fiz isso:
D d = new D();
d.cor = "laranja";
Criteria crit = session.createCriteria(A.class)
.createCriteria("b")
.createCriteria("c")
.createCriteria("d").add(Example.create(d));
...
Isso não me retorna nada. Então eu fiz:
A a = new A();
B b = new B();
C c = new C();
D d = new D();
d.cor = "laranja";
a.addB(b);
b.addC(c);
c.addD(d);
Criteria crit = session.createCriteria(A.class).add(Example.create(a));
.createCriteria("b").add(Example.create(b));
.createCriteria("c").add(Example.create(c));
.createCriteria("d").add(Example.create(d));
...
Isso também não me retorna nada.
Como eu poderia resolver esse tipo de busca?
Obrigado