J'utilise Jodatime dans mon application Play, mais je dois actuellement faire un tas de conversion dans les deux sens de/vers Java.util.Date
et Java.sql.Time
.
Étant donné que le jodatime est inclus dans la distribution Play, je pense qu'il y a probablement une meilleure façon de le faire. Existe-t-il un moyen de rendre mes champs de modèle DateTime
s au lieu de Java.util.Date
et Java.sql.Time
donc la conversion se fait automatiquement? Y a-t-il une autre façon de rationaliser cela?
Pour Hibernate 3, ajoutez l'annotation suivante à votre champ de date:
@Type(type="org.joda.time.contrib.hibernate.PersistentDateTime")
Hibernate va maintenant faire le sale boulot pour vous.
(Assurez-vous d'avoir joda-time-hibernate.jar dans votre chemin de classe)
MISE À JOUR:
Pour Hibernate 4 et 5, ajoutez l'annotation suivante:
@Type(type="org.jadira.usertype.dateandtime.joda.PersistentLocalDateTime")
(Assurez-vous d'avoir jadira-usertype-core.jar dans votre chemin de classe)
Joda recommande d'utiliser les bibliothèques UserType avec Hibernate 4.0, la version d'Hibernate fournie avec Play 1.2.x (voir: http://joda-time.sourceforge.net/contrib/hibernate/index.html ).
La bonne façon de gérer la dépendance utilise le dependencies.yml
fichier, y compris une ligne comme celle-ci:
- org.jadira.usertype -> usertype.jodatime 2.0.1
Au lieu de mettre le @Type
annotation sur chacune de vos propriétés Joda, vous pouvez l'ajouter dans vos propriétés jpa
#Hibernate config
jadira.usertype.autoRegisterUserTypes=true
et cela devrait très bien fonctionner.
ps. jadira-usertype-core.jar devrait être dans votre chemin de classe.
Nous devrions activer deux jars dans le projet Hibernate 4: