String jpql = "SELECT c.name FROM Customer c "
+ "JOIN c.orders o JOIN o.lineItems i "
+ "WHERE i.product.productType = 'printer'";
CriteriaQuery q = cb.createQuery();
Root<Customer> c = q.from(Customer.class);
SetJoin<Customer, Order> o = c.join(customer_.getSet("orders",
Order.class));
ListJoin<Order, LineItem> i = o.join(order_.getList("lineItems",
LineItem.class));
q.select(c.get(Customer_.name)).where(