Java 8 LocalDateTime et Hibernate 4
J'ai la classe suivante description de l'extrait:
...
@Column(name = "invalidate_token_date")
@Temporal(TemporalType.TIMESTAMP)
private LocalDateTime invalidateTokenDate;
....
Ce code ne fonctionne pas car @Temporal
ne prend pas en charge LocalDateTime.
j'ai vu la suggestion comment utiliser LocalDateTime de Joda-Time mais j'utilise Java 8.
Merci de me conseiller quelque chose.
P. S.
Ici est mon JPA dépendance:
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0</version>
</dependency>
OriginalL'auteur gstackoverflow | 2015-01-02
Vous devez vous connecter pour publier un commentaire.
Depuis Hibernate ne prennent pas en charge, vous avez besoin pour mettre en œuvre un type d'utilisateur, comme indiqué dans la cette exemple.
La nouvelle usertype peuvent ensuite être utilisés dans la cartographie avec le @annotation de Type. Par exemple
L' @annotation de Type a besoin d'un chemin d'accès complet à la classe qui implémente l'userType de l'interface; c'est l'usine pour produire le type de cible de la colonne mappés.
Voici comment faire la même chose dans JPA2.1
Mise à jour de la réponse avec les informations d'utilisation
Notez que si vous convertissez magasin
java.util.LocalDate
champs, vous ne pouvez pas passer par lajava.sql.Date.toInstant()
méthode, qui lève une exception; l'utilisationtoLocalDate
à la place.OriginalL'auteur Andy Dufresne
Pour tout Hibernate 5.utilisateurs de x, il est
Vous n'avez pas besoin de faire autre chose. Il suffit d'ajouter la dépendance, et le Java 8 types de travail comme les autres types de base, pas d'annotations nécessaires.
Remarque: cela ne peut pas enregistrer de
timestamp
type de bien. Test avec MySQL, il permet d'économiser àdatetime
type.Ce n'est pas assez pour le printemps de configuration. Après l'ajout d'hibernate-java8 dépendance à projet ClassCastException se produit encore.
Je vous remercie. L'ajout d'hibernate-java8 artefact a fonctionné pour moi avec le Printemps, 4.2.5 et Hibernate 5.1.31. A été prise en org.mise en veille prolongée.type.SerializationException: impossible de désérialiser sur l'entité avec LocalDateTime champs.
La question est à propos Hibernate4, donc c'est une bonne idée, mais pas de réponse pour cette question
N'est plus nécessaire dans Hibernate 5.3
OriginalL'auteur Paul Samsotha
Si vous pouvez utiliser Java EE 7, il y a de plus élégant solution:
>> mettre en Œuvre cette:
>> Utiliser comme ceci:
Valeur
(autoApply = true)
signifie que@Converter
est automatiquement utilisé pour la conversion de tous lesLocalDateTime
propriété dans votre Entité JPA.Btw,
AttributeConverter
est assez bon pour la cartographie des Énumérations trop.Trouvé un convertisseur ici: stackoverflow.com/questions/19431234/...
C'est en fait une JPA fonction, qui fonctionne également avec Spring Data JPA, non seulement avec Java EE.
OriginalL'auteur Petr Hunka
J'ai créé un plugin simple pour nous permettre d'utiliser java.temps.* des classes. À cette époque, le plus couramment utilisé des classes sont mises en œuvre. Jetez un oeil ici: https://github.com/garcia-jj/jpa-javatime.
Si vous utilisez Maven, c'est l'artefact de configuration:
Il y a plus d'information à la page du projet.
Merci.
OriginalL'auteur Otávio Garcia