Malheureusement, vous ne pouvez pas utiliser les résultats de la sous-requête JPA dans la clause from. Ni dans les requêtes Criteria, ni dans celles JPQL. Cela semble être le plus gros problème pour traduire votre requête en une requête JPA.
Secondairement, il n'y a pas de Round
fonction non plus. Mais cela ne devrait pas être un problème pour surmonter cela en utilisant CriteriaBuilder#selectCase()