Quelle est l’utilisation de l’annotation @Temporal dans Hibernate?

La documentation Hibernate contient les informations ci-dessous pour l’annotation @Temporal :

Dans les API Java simples, la précision temporelle du temps n’est pas définie. Lorsque vous traitez des données temporelles, vous pouvez décrire la précision attendue dans la firebase database. Les données temporelles peuvent avoir la précision DATE, TIME ou TIMESTAMP (c’est-à-dire la date réelle, uniquement l’heure ou les deux). Utilisez l’annotation @Temporal pour affiner cela.

Que signifie temporal precision of time is not defined ? Quelles sont temporal données temporal et leur précision? Comment ça se règle?

Cette annotation doit être spécifiée pour les champs persistants ou les propriétés de type java.util.Date et java.util.Calendar . Il ne peut être spécifié que pour les champs ou les propriétés de ces types.

L’annotation Temporal peut être utilisée conjointement avec l’annotation Basic , l’annotation Id ou l’annotation ElementCollection (lorsque la valeur de la collection d’éléments est d’un type temporel).

Dans les API Java simples, la précision temporelle du temps n’est pas définie. Lorsque vous traitez des données temporelles, vous pouvez décrire la précision attendue dans la firebase database. Les données temporelles peuvent avoir la précision DATE, TIME ou TIMESTAMP (c’est-à-dire la date réelle, uniquement l’heure ou les deux). Utilisez l’annotation @Temporal pour affiner cela.

Les données temporelles sont les données liées au temps. Par exemple, dans un système de gestion de contenu, la date de création et la date de dernière mise à jour d’un article sont des données temporelles. Dans certains cas, les données temporelles ont besoin de précision et vous souhaitez stocker une date / heure précise ou les deux ( TIMESTAMP ) dans la table de firebase database.

La précision temporelle n’est pas spécifiée dans les API Java principales. @Temporal est une annotation JPA qui convertit entre horodatage et java.util.Date . Il convertit également l’ time-stamp en temps. Par exemple, dans l’extrait de @Temporal(TemporalType.DATE) ci-dessous, @Temporal(TemporalType.DATE) supprime la valeur de temps et conserve uniquement la date .

 @Temporal(TemporalType.DATE) private java.util.Date creationDate; 

Selon javadocs,

Annotation pour déclarer un {@code TemporalType} approprié sur les parameters de la méthode de requête. Notez que cette annotation ne peut être utilisée que sur les parameters de type {@link Date} avec la valeur par défaut TemporalType.DATE

[Informations ci-dessus recueillies auprès de diverses sources]

@Temporal est une annotation JPA qui peut être utilisée pour stocker uniquement TIME ( java.sql.Time ), DATE ( java.sql.Date ) ou TIMESTAMP ( java.sql.Timestamp ) dans la table de firebase database. Généralement, lorsque nous déclarons un champ Date dans la classe et que nous essayons de le stocker. Il stockera l’horodatage dans la firebase database.

 private Date joinedDate; 

la valeur stockée ressemble à 08-07-17 04: 33: 35.870000000 PM

Si nous voulons stocker uniquement la date dans la firebase database, nous pouvons utiliser cette annotation avec l’atsortingbut DATE.

 @Temporal(TemporalType.DATE) private Date joinedDate; 

Cette fois, il stocker 08-07-17 dans la firebase database

Il existe d’autres atsortingbuts de @Temporal qui peuvent être utilisés en fonction de l’exigence.

Les types temporels sont l’ensemble des types temporels pouvant être utilisés dans les mappages d’état persistants.

La liste des types temporels pris en charge comprend les trois types java.sql.Date , java.sql.Time et java.sql.Timestamp , ainsi que les deux types java.util.Date et java.util.Calendar .

Les types java.sql sont complètement sans tracas. Ils agissent comme n’importe quel autre type de mappage simple et ne nécessitent aucune considération particulière.

Les deux types java.util ont besoin de métadonnées supplémentaires, toutefois, pour indiquer les types JDBC java.sql à utiliser lors de la communication avec le pilote JDBC. Cela se fait en les annotant avec l’annotation @Temporal et en spécifiant le type JDBC en tant que valeur du type énuméré TemporalType .

Il existe trois valeurs énumérées de DATE, TIME et TIMESTAMP pour représenter chacun des types java.sql .

utilisez ceci

 @Temporal(TemporalType.TIMESTAMP) @Column(name="create_date") private Calendar createDate; public Calendar getCreateDate() { return createDate; } public void setCreateDate(Calendar createDate) { this.createDate = createDate; }