Dúvida sobre Criteria/Example - como fazer essa busca?

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