java traduzione Qual è l'uso dell'annotazione @Temporal in Hibernate?




orm java hibernate (4)

I tipi temporali sono l'insieme di tipi basati sul tempo che possono essere utilizzati nei mapping di stato persistenti.

L'elenco dei tipi temporali supportati include i tre tipi java.sql.Date , java.sql.Time e java.sql.Timestamp e include i due tipi java.util.Date e java.util.Calendar .

I tipi java.sql sono completamente privi di problemi. Si comportano come qualsiasi altro tipo di mappatura semplice e non richiedono alcuna considerazione particolare.

I due tipi java.util necessitano di ulteriori metadati, tuttavia, per indicare quale dei tipi JDBC java.sql utilizzare durante la comunicazione con il driver JDBC. Questo viene fatto annotandoli con l'annotazione @Temporal e specificando il tipo JDBC come valore del tipo enumerato TemporalType .

Esistono tre valori enumerati di DATE, TIME e TIMESTAMP per rappresentare ciascuno dei tipi java.sql .

La documentazione di Hibernate contiene le informazioni seguenti per l'annotazione @Temporal :

Nelle semplici API Java, la precisione temporale del tempo non è definita. Quando si ha a che fare con dati temporali, si potrebbe voler descrivere la precisione prevista nel database. I dati temporali possono avere la precisione DATE, TIME o TIMESTAMP (ovvero la data effettiva, solo l'ora o entrambi). Usa l'annotazione @Temporal per perfezionarla.

Cosa significa temporal precision of time is not defined ? Quali sono temporal dati temporal e la sua precisione? Come si sintonizza?


Usa questo

@Temporal(TemporalType.TIMESTAMP)
@Column(name="create_date")
private Calendar createDate;

public Calendar getCreateDate() {
    return createDate;
}

public void setCreateDate(Calendar createDate) {
    this.createDate = createDate;
}

Questa annotazione deve essere specificata per i campi persistenti o le proprietà di tipo java.util.Date e java.util.Calendar . Può essere specificato solo per campi o proprietà di questi tipi.

L'annotazione Temporal può essere utilizzata insieme all'annotazione di Basic , l'annotazione Id o l'annotazione ElementCollection (quando il valore della raccolta di elementi è di un tipo temporale.

Nelle semplici API Java, la precisione temporale del tempo non è definita. Quando si ha a che fare con dati temporali, si potrebbe voler descrivere la precisione prevista nel database. I dati temporali possono avere la precisione DATE, TIME o TIMESTAMP (ovvero la data effettiva, solo l'ora o entrambi). Usa l'annotazione @Temporal per perfezionarla.

I dati temporali sono i dati relativi al tempo. Ad esempio, in un sistema di gestione dei contenuti, la data di creazione e la data dell'ultimo aggiornamento di un articolo sono dati temporali. In alcuni casi, i dati temporali devono essere precisi e si desidera memorizzare data / ora precise o entrambi ( TIMESTAMP ) nella tabella del database.

La precisione temporale non è specificata nelle API Java principali. @Temporal è un'annotazione JPA che converte avanti e indietro tra timestamp e java.util.Date . Converte anche time-stamp in tempo. Ad esempio, nello snippet seguente, @Temporal(TemporalType.DATE) elimina il valore del tempo e conserva solo la data .

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

Come per javadocs,

Annotazione per dichiarare un {@code TemporalType} appropriato sui parametri del metodo di query. Si noti che questa annotazione può essere utilizzata solo sui parametri di tipo {@link Data} con il valore predefinito TemporalType.DATE

[Informazioni sopra raccolte da varie fonti]


@Temporal è un'annotazione JPA che può essere utilizzata per memorizzare solo TIME ( java.sql.Time ), DATE ( java.sql.Date ) o TIMESTAMP ( java.sql.Timestamp ) nella tabella del database. Generalmente quando dichiariamo un campo Data nella classe e proviamo a memorizzarlo. Memorizzerà il timestamp nel database.

private Date joinedDate;

il valore memorizzato sembra 08-07-17 04: 33: 35.870000000 PM

Se vogliamo memorizzare solo la data nel database, possiamo usare questa annotazione con l'attributo DATE.

@Temporal(TemporalType.DATE)

private Date joinedDate;

Questa volta, archiviare 08-07-17 nel database

Esistono anche altri attributi di @Temporal che possono essere utilizzati in base al requisito.





hibernate