JPQL и Criteria API:
SELECT o
FROM Order o JOIN TREAT(o.product AS Book) b
CriteriaQuery<Order> query = cb.createQuery(Order.class);
Root<order> root = query.from(Order.class)
Join product = root.join("product");
Join book = cb.treat(product, Book.class);
query.select(root);
Это один и тот же запрос?Для API критериев cb.treat (...) создает новый экземпляр Join (книга), но соединение (книга) не используется в Query.
Для JPQL корень присоединяется к обработанному JOIN(книга).