 <p>I had the same issue and found a solution thanks to <a href="http://stackoverflow.com/users/496099/chris">chris</a> (see <a href="http://stackoverflow.com/questions/17041735/jpa-criteria-api-where-subclass">JPA Criteria API where subclass</a>).</p> <p>For this you need JPA 2.1, and you make use of one of the <a href="http://docs.oracle.com/javaee/7/api/javax/persistence/criteria/CriteriaBuilder.html#treat(javax.persistence.criteria.Path,%20java.lang.Class)" rel="nofollow"><code>CriteriaBuilder.treat()</code></a> methods. Just replace your <code>builder.equal...</code> line by:</p> <pre><code>builder.equal(builder.treat(root.get("article"), Book.class).get("title"), "Foo"); </code></pre>