За съжаление не можете да използвате резултатите от JPA подзаявка в клаузата from. Нито в Criteria queries, нито в JPQL такива. Това изглежда като най-големият проблем при превеждането на вашата заявка в JPA такава.
На второ място, няма Round
функция, или. Но не би трябвало да е проблем да се преодолее това с помощта на CriteriaBuilder#selectCase()