JPA et Hibernate - Critères vs JPQL ou HQL

Quels sont les avantages et les inconvénients de l'utilisation des critères ou HQL ? L'API Criteria est une belle façon orientée objet d'exprimer des requêtes dans Hibernate, mais parfois les requêtes Criteria sont plus difficiles à comprendre / construire que HQL. Quand utilisez-vous les critères...