Comment utiliser joda time avec JPA (eclipselink)?
J'ai essayé d'utiliser le DataTime
dans mon entity
classe. L'ajout de @Temporal(TemporalType.DATE)
au-dessus du champ, j'ai obtenu l'erreur en disant "La persistance de terrain ou d'un bien pour Temporelles doit être du type java.util.Date, java.util.Calendrier ou java.util.GregorianCalendar". Je peux introduire la conversion en arrière; à l'aide de setters et getters comme suit:
@Temporal(TemporalType.DATE)
private Calendar attendanceDate;
public DateTime getAttendanceDate() {
return new DateTime(this.attendanceDate);
}
public void setAttendanceDate(DateTime attendanceDate) {
this.attendanceDate = attendanceDate.toCalendar(Locale.getDefault());
}
mais j'espère eclipselink
de le faire pour moi. Je suis allé thro' Persistent Joda-time DateTime via Hibernate. La réponse, ce qui suggère d'utiliser hibernate, mais je dois utiliser eclipselink. Je peux utiliser la DateTime
objet dans ma classe d'entité avec la DB de la représentation comme BLOB
mais j'en ai besoin comme Date
. Est-il quelque chose comme jodatime-eclipselink
? Ou toute autre suggestion? Merci pour l'aide.
source d'informationauteur Ahamed
Vous devez vous connecter pour publier un commentaire.
De base, le lien définit un EclipseLink Convertisseur pour convertir de Joda DateTime pour java.sql.Ou d'horodatage Date.
Vous pouvez l'utiliser, ou définir votre propre convertisseur et l'utiliser via @Convertir, @Convertisseur en EclipseLink.
Pour DDL création, le convertisseur doit définir la méthode initialize et définissez le type sur la cartographie du champ de java.sql.Timestamp.
Veuillez vous connecter un bug (ou voter pour l'existant) sur cette EclipseLink, nous devrions avoir le soutien de Joda.
J'Essaie d'utiliser joda-time-eclipselink-intégration, mais ne fonctionne pas, probablement j'ai fait quelque chose de mal,
J'ai donc fait plusieurs recherches et j'ai trouvé ce lien http://jcodehelp.blogspot.com.br/2011/12/persist-joda-datetime-with-eclipselink.htmlils utilisent @Convertisseur annotation pour convertir le Joda Date Heure.
J'essaye et je travaille pour moi, je l'espère, fonctionne pour vous aussi.
J'ai voulu faire la même chose, et Googler autour de en fait qui m'a conduit ici. J'ai été en mesure d'accomplir cette tâche en utilisant la
@Access
annotation. Tout d'abord, vous annoter la classe comme ceciCette offre d'accès sur le terrain pour tout ce que vous n'avez pas à annoter les champs individuellement. Ensuite, vous créez un getter et setter pour la JPA à utiliser.
La
@Access(AccessType.PROPERTY)
dit JPA de persister et de récupérer par le biais de ces méthodes.Enfin, vous aurez envie de marquer votre variable membre en tant que passagère comme suit
Cela s'arrête JPA d'essayer de persister à partir du champ.
Que doit accomplir ce que vous essayez de faire. Il a très bien fonctionné pour moi.
Ahamed, vous avez mentionné qu'il n'était pas en train de travailler pour vous. En outre, vous devez remplacer la méthode initialize de l'convertisseur pour définir le champ désiré type:
Ce qui suit est un exemple de travail sur la base des réponses disponibles dans la rubrique
Fondamentalement, l'approche la plus simple est d'utiliser EclipseLink
@Converter
pour unDateTime
champ dans votre Entité.Le convertisseur d'utilisation se présente comme suit:
Et le convertisseur lui-même:
Je suis en ajoutant ceci dans le but de facile copier-coller solution.
Solution est ici
joda-time-eclipselink-intégration
Réponse de Atais fonctionne bien. Ci-dessous une mise à niveau.
Vous pouvez omettre @convertisseur annotation en vous inscrivant à l'échelle mondiale.
Au persistance.xml dans persitence-unité d'ajouter:
et fichier
META-INF/xyz-orm.xml
avec le contenu:Si votre fichier de config est
META-INF/orm.xml
vous pouvez omettre la première étape, car il est par défaut confing pour tous persitence unités.