java définition tutorial - Comparer la partie temporelle du champ datetime dans Hibernate




1 Answers

Ajoutez l'expression en tant que restriction SQL plutôt que d'avoir une requête native complète. Je ne connais pas spécifiquement MySQL, mais imaginez quelque chose comme ça:

Criteria criteria = session.createCriteria(MyTable.class);
criteria.add( 
  Expression.sql(
    "TIME( {alias}.my_date, 'hh:mm:ss') >= :1", 
    dateRangeMin, 
    new StringType()
  )
);
cours openclassroom example

J'ai une application qui utilise une combinaison hibernate (annotations) / mysql pour ORM. Dans cette application, j'ai obtenu une entité avec un champ Date. Je cherche un moyen de sélectionner cette date dans un intervalle de temps (donc hh: mm: ss sans la partie date).

En MySQL il y a une fonction TIME (expression) qui peut extraire la partie time et l'utiliser dans la clause where, mais qui ne semble pas disponible dans Hibernate sans passer aux requêtes natives. Y at-il une option dans hibernate pour faire ceci, ou devrais-je passer en revue les résultats dans Java et faire la comparaison là? Serait-ce beaucoup plus lent que la solution MySQL, puisque cela n'utiliserait pas d'index?




Related