Just cast the productItemFetch
to a Join
and then use the productItemJoin
to get the attribute.
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Ereturn> criteria = builder.createQuery( Ereturn.class );
Root<Ereturn> er = criteria.from(Ereturn.class);
Fetch<Ereturn, ProductItem> productItemFetch = er.fetch("productItems", JoinType.LEFT);
Join<Ereturn, ProductItem> productItemJoin = (Join<Ereturn, ProductItem>) productItemFetch;
List<Predicate> predicates = new ArrayList<>();
predicates.add(builder.equal( productItemJoin.get( "status" ), "RECEIVED"));
criteria.where(
builder.and(predicates.toArray(new Predicate[predicates.size()]))
);
List<Ereturn> ers = em.createQuery( criteria )
.getResultList();