2016-04-26 75 views
2

我試圖在我的新項目中設置休眠,我有這個問題。我正在使用oracle數據庫。休眠映射時間戳爲可序列化

在一些表格中,我有多個時間戳列。

Hibernate將此列映射爲Serializable。

我試圖手動更改爲LocalTime類型,但項目甚至不會運行。我更改了Availability.java和Availability.hbm.xml。

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

我發現這個:How to map oracle timestamp to appropriate 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; 
    } 
} 

回答

1

你可以使用:

private Timestamp initialhour; 

如果你想可以添加註釋,但它應該只是罰款,沒有它:

@Temporal(TemporalType.TIMESTAMP) 
private Timestamp initialhour; 

如果你想用java 8日期時間,你可以使用@Type註釋,類似的東西:

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

嘗試添加hibernate-java8到您的項目。問題是LocalTime是默認情況下Hibernate不支持的Java8類。

0

同樣的事情發生在我身上,也與「間隔時間」數據類型,我發現手動解決這個問題的最簡單的方法是替換「時間戳」的「可序列化」,不是那麼幹淨,但對我有用。