When measuring JPQL/Criteria API vs Spring Data JPA projection execution time, Spring Data JPA is way slower than the other.
Avg for JPQL/Criteria API: 73ms
Avg for Spring Data JPA: 774ms
The slowness comes from reinstantiating the DefaultConversionService in ProjectingConverter. Maybe using the shared instance from DefaultConversionService would be a solution for it to eliminate the cost of reinstantiation, see the discussion with Oliver Gierke on Twitter.