La documentation Hibernate contient les informations ci-dessous pour l' @Temporal
annotation:
Dans les API Java simples, la précision temporelle de l'heure n'est pas définie. Lorsque vous traitez des données temporelles, vous souhaiterez peut-être décrire la précision attendue dans la base de données. Les données temporelles peuvent avoir une 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 veut temporal precision of time is not defined
dire? Qu'est-ce que la temporal
donnée et sa précision? Comment s'accorde-t-il?
Réponses:
Cette annotation doit être spécifiée pour les champs persistants ou les propriétés de type
java.util.Date
etjava.util.Calendar
. Il ne peut être spécifié que pour les champs ou propriétés de ces types.L'
Temporal
annotation peut être utilisée conjointement avec l'Basic
annotation, l'Id
annotation ou l'ElementCollection
annotation (lorsque la valeur de la collection d'élément est d'un tel type temporel.Dans les API Java simples, la précision temporelle de l'heure n'est pas définie. Lorsque vous traitez des données temporelles, vous souhaiterez peut-être décrire la précision attendue dans la base de données. Les données temporelles peuvent avoir une précision DATE, TIME ou TIMESTAMP (c'est-à-dire la date réelle, uniquement l'heure ou les deux). Utilisez l'
@Temporal
annotation 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 la base de données.La précision temporelle n'est pas spécifiée dans les API Java principales.
@Temporal
est uneJPA
annotation qui convertit dans les deux sens entre horodatage etjava.util.Date
. Il se convertit égalementtime-stamp
en temps. Par exemple, dans l'extrait de code ci-dessous,@Temporal(TemporalType.DATE)
supprime la valeur de l'heure et ne conserve que la date .Selon javadocs,
[Informations ci-dessus recueillies auprès de diverses sources]
la source
yyyy-MM-dd
02/10/2017
et je veux le convertir en2017-10-02
ou2017/10/02
@Temporal
est une annotation JPA qui peut être utilisée pour stocker dans la table de base de données l'un des éléments de colonne suivants:java.sql.Date
)java.sql.Time
)java.sql.Timestamp
)Généralement, lorsque nous déclarons un
Date
champ dans la classe et essayons de le stocker.Il sera stocké en tant que TIMESTAMP dans la base de données.
Le code ci-dessus stockera la valeur comme 08-07-17 04: 33: 35.870000000 PM
Si nous voulons stocker uniquement la DATE dans la base de données,
nous pouvons utiliser / définir
TemporalType
.Cette fois, il stockerait le 08-07-17 dans la base de données
Il existe également d'autres attributs
@Temporal
qui peuvent être utilisés en fonction de l'exigence.la source
Les types temporels sont l'ensemble des types basés sur le temps qui peuvent être utilisés dans les mappages d'états persistants.
La liste des types temporels pris en charge comprend les trois
java.sql
typesjava.sql.Date
,java.sql.Time
etjava.sql.Timestamp
, et il comprend les deuxjava.util
typesjava.util.Date
etjava.util.Calendar
.Les
java.sql
types sont totalement sans tracas. Ils agissent comme n'importe quel autre type de mappage simple et ne nécessitent aucune considération particulière.java.util
Cependant, les deux types nécessitent des métadonnées supplémentaires pour indiquer lejava.sql
type JDBC à utiliser lors de la communication avec le pilote JDBC. Cela se fait en les annotant avec l'@Temporal
annotation et en spécifiant le type JDBC comme valeur duTemporalType
type énuméré.Il existe trois valeurs énumérées DATE, TIME et TIMESTAMP pour représenter chacun des
java.sql
types.la source
utilisez ceci
la source
Si vous cherchez une réponse courte:
Dans le cas de l'utilisation de java.util.Date, Java ne sait pas vraiment comment se rapporter directement aux types SQL. C'est là
@Temporal
qu'entre en jeu. Il est utilisé pour spécifier le type SQL souhaité.Source: Baeldung
la source
J'utilise Hibernate 5.2 et ce
@Temporal
n'est plus nécessaire.java.util.date , sql.date , time.LocalDate sont stockés dans la base de données avec le type de données approprié comme date / horodatage.
la source
Nous utilisons l'annotation @Temporal pour insérer la date, l'heure ou les deux dans la table de base de données.En utilisant TemporalType, nous pouvons insérer des données, l'heure ou les deux table int.
la source