Criando consulta à API de Critérios JPA - classificando por número de elementos na coleção

Estou com problemas ao criar uma consulta com a API de critérios JPA.

Entidades e propriedades significativas:

@Entity
public class Post {
    @Id int id;
    @OneToMany (mappedBy = "post") Set<Comment> comments;
    //...
}

@Entity
public class Comment {
    @Id int id;
    @ManyToOne Post post;
    //...
}

Preciso de uma consulta que retorne todas as postagens do banco de dados ordenadas pelo número de comentários (OneToMany noPost) No começo, pensei que isso pudesse ser implementado comJPQL gostar:

SELECT p 
FROM Post p 
ORDER BY SIZE(p.comments) DESC

Mas funçãoSIZE(...) não pode ser usado para ser solicitado por ele emJPQL.

Então, eu descobri sobreJPA Criteria APIe tentei o seguinte:

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Post> cq = cb.createQuery(Post.class);
Root<Post> p = cq.from(Post.class);
cq.select(p);
cq.orderBy(cb.desc(p.get("comments")));
List<Post> resultList = em.createQuery(cq).getResultList();

Com esta consulta, não estou obtendo resultados adequados. Estou ciente de que sinto falta de conseguirsize do conjunto 'comentários', mas não sabe como adicionar essa parte. Eu não estou realmente familiarizado comJPA Criteria API. Como deve ser essa consulta para obter todas as postagens ordenadas pelo tamanho de suacomments campo (conjunto)?

questionAnswers(1)

yourAnswerToTheQuestion