CriteriaBuilder JPA

Olá, alguém poderia me ajudar a resolver esse problema.

No if (email != null), descrevi o problema.

	public List<PaymentData> listAll(Integer first, Integer size, String name, String email, Calendar dateBegin, Calendar dateEnd) {	
		
		CriteriaBuilder cb = entityManager.getCriteriaBuilder();
		CriteriaQuery<PaymentData> query = cb.createQuery(PaymentData.class);			
		Root<PaymentData> root = query.from(PaymentData.class);	
		
		Predicate conjunction = cb.conjunction();
		
		//colocar os filtros
		if (name != null) {
			conjunction = cb.and(conjunction, cb.equal(root.<String>get("nome"), name));			
		}
		
		if (email != null) {
			System.out.println("email : "+email);
			//Account - UserSiter

                        //Preciso fazer uma busca pelo atributo email, só que esse esta dentro do Obj UserSiter e o mesmo esta dentro de Account e PaymentData
                        //A cima já pego o PaymentData, agora não sei como especificar a query, onde tenho que passar pelo Account e depois no UserSiter para chegar no email


			Root<UserSiter> userSiterRoot = query.from(UserSiter.class);
			conjunction = cb.and(conjunction, cb.equal(userSiterRoot.<String>get("email"), email));	
		}
		

		query.select(root)
		.where(conjunction)
		.orderBy(cb.desc(root.<String>get("id")));	 	
	return entityManager.createQuery(query)
		.setFirstResult(first)
		.setMaxResults(size)
		.getResultList();
		
	}

Obrigado.

pensa em como vc faria isso com o objetos normais…

se vc faz:

[code]
paymentData.getAccount().getUserSiter().getEmail();

[code]
na criteria vc faz:

root.get("account").get("userSiter").<String>get("email")

obrigado