Hibernate将Timestamp映射为Serializable

时间:2016-04-26 12:21:19

标签: java oracle hibernate

我试图在我的新项目中设置hibernate,我遇到了这个问题。我使用的是oracle数据库。

在某些表中,我有多个时间戳列。

Hibernate将此列映射为Serializable。

我尝试手动更改为LocalTime类型,但项目甚至无法运行。我在Availability.java和Availability.hbm.xml上都进行了更改。

它应该是Serializable吗?我想改用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;
    }
}

3 个答案:

答案 0 :(得分:1)

你可以使用:

  private Timestamp initialhour;

如果你想添加注释,但没有它就可以正常工作:

 @Temporal(TemporalType.TIMESTAMP)
 private Timestamp initialhour;

如果你想使用java 8 DateTime,可以使用@Type注释,类似:

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

答案 1 :(得分:0)

尝试将hibernate-java8添加到您的项目中。问题是LocalTime是一个Java8类,Hibernate默认不支持。

答案 2 :(得分:0)

同样的情况发生在我身上,同样是“间隔到日期”数据类型,我发现手动解决此问题的最简单方法是将“Serializable”替换为“Timestamp”,不是那么干净但对我有效。