2016-04-26 45 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

同样的事情发生在我身上,也与“间隔时间”数据类型,我发现手动解决这个问题的最简单的方法是替换“时间戳”的“可序列化”,不是那么干净,但对我有用。