I’m learning about Hibernate’s Criteria API and would like to know how to convert this particular SQL query to Criteria API. Here is the SQL query I’m working with:
select s1.score as score,count(s1.id) as rank from
scores s1
inner join
(select distinct score from scores) s2
on s1.score <= s2.score
group by s1.id,s1.score
order by 2;
Session session = sessionFactory.getCurrentSession();
CriteriaBuilder cb = session.getCriteriaBuilder();
CriteriaQuery<Output> cr = cb.createQuery(Output.class);
Root<RankScore> r1 = cr.from(RankScore.class);
Path<Integer> r1Id = r1.get("id");
Path<BigDecimal> r1Score = r1.get("score");
CriteriaQuery<BigDecimal> cr2 = cb.createQuery(BigDecimal.class);
Root<RankScore> r2 = cr2.from(RankScore.class);
Path<BigDecimal> r2Score = r2.get("score");
cr2.distinct(true);
cr2.select(r2Score);
This is the code i have tried and i don’t know how to proceed any further