簡體   English   中英

使用帶注釋的JPA對象(Hibernate JPA提供程序)時,如何在列中插入MySQL表的默認日期時間值?

[英]How do I insert MySQL table's default datetime value in a column when using annotated JPA objects (Hibernate JPA provider)?

我有一個要為其編寫JPA層的MySQL數據庫(舊版)。 我將Hibernate用作JPA提供程序,並已將數據庫表與帶注釋的Java類進行映射。

數據庫中的一列包含時間戳記,並且具有默認值(全零,即0000-00-00 00:00:00,但是無論此默認值是否是其他東西,問題均相同):

releasedate TIMESTAMP DEFAULT '0000-00-00 00:00:00'

注釋如下:

@Temporal(TemporalType.TIMESTAMP)
@Column(name = "releasedate", nullable = false, length = 19)
public Date getReleasedate() {
    return this.releasedate;
}

通常,在創建新條目時,我需要默認值,因此在持久保存它之前,我不會在Java對象中設置日期(它為null)。

但是,這導致日期設置為現在,而不是默認值。

我可以將“ insertable”注釋元素設置為“ false”,但這是不可取的,因為有時候我確實想在創建時設置自定義日期。

我也試過在我的注釋提供列定義(如提到這里 ),但無濟於事。

我也有閱讀全零日期時間值的問題(如提到這里 ),並通過設置JDBC屬性“zeroDateTimeBehavior”到“convertToNull”解決了這個。 這解決了閱讀問題,但仍然存在寫作問題。

有沒有人對在這種情況下該怎么辦有任何想法?

干杯!

通常,空值將觸發數據庫使用該字段的默認時間戳。

我不確定如果您的會話是無狀態的,那么該實體可能會將空值保留在java字段中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM