Ho appena letto il riferimento di ibernazione e dicono che dovresti usare i constans per le query HQL. Tuttavia, ciò non è sempre possibile, ad esempio se si esegue una funzione di ricerca e si hanno 10 criteri (non i criteri jpa, solo le colonne che si stanno cercando). Scommetto che puoi fare un HQL hacky che si trasforma in SQL male performante, ma ritengo che non sia la scelta migliore.
So che puoi utilizzare l'API Criteria, ma non è così potente come HQL e alcune persone semplicemente non gli piacciono (sono uno di loro).
Come lo fai nelle tue applicazioni?
Intendo codice simile (è solo un esempio!)
String hql = "from Biuro where ";
List parameters = ...
if (dateFrom!=null){
hql += " dateFrom>=? ";
parameters.add(dateFrom);
}