I\'m trying to achieve something like the following, using the JPA Criteria API:
SELECT b FROM Box b JOIN SpecialItem s WHERE s.specialAttr = :specialAttr
>
If using JPA 2.1 you might use
"SELECT b FROM Box b WHERE TREAT(b.item as SpecialItem).specialAttr = :specialAttr"
or
CriteriaQuery q = cb.createQuery(Box.class);
Root box= q.from(Box.class);
Join order = box.join("item");
q.where(cb.equal(cb.treat(order, SpecialItem.class).get("specialAttr"),
qb.parameter(String.class, "specialAttr")));
q.select(Box);