簡體   English   中英

Hibernate 將時間戳映射為可序列化

[英]Hibernate maps Timestamp as Serializable

我正在嘗試在我的新項目中設置休眠,但我遇到了這個問題。 我正在使用oracle數據庫。

在某些表中,我有不止一列是時間戳。

Hibernate 將此列映射為 Serializable。

我嘗試手動更改為 LocalTime 類型,但該項目甚至無法運行。 我更改了 Availability.java 和 Availability.hbm.xml。

它應該是可序列化的嗎? 我想改用 LocalTime。 有沒有辦法做到這一點?

我發現了這個: How to map oracle timestamp to適當的 java type in hibernate? . 但那是 5 年前的事了,這似乎是一個復雜的解決方案。

public class Availability  implements java.io.Serializable {
    private int id;
    private Teacher teacher;
    private byte month;
    private short year;
    private Serializable initialhour;
    private Serializable endhour;
    private String weekday;
    public void setInitialhour(Serializable initialhour) {
        this.initialhour = initialhour;
    }
    public Serializable getEndhour() {
        return this.endhour;
    }
}

你可以只使用:

  private Timestamp initialhour;

如果您想添加注釋,但沒有它應該可以正常工作:

 @Temporal(TemporalType.TIMESTAMP)
 private Timestamp initialhour;

如果你想使用 java 8 DateTime 你可以使用 @Type 注釋,就像這樣:

@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentDateTime")
private DateTime initialhour;

嘗試將hibernate-java8添加到您的項目中。 問題是, LocalTime是一個Java8類Hibernate默認不支持。

同樣的事情發生在我身上,也是“間隔到一天”數據類型,我發現手動解決這個問題的最簡單方法是將“可序列化”替換為“時間戳”,不太干凈但對我有用。

暫無
暫無

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

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