我试图在我的新项目中设置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;
}
}
答案 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”,不是那么干净但对我有效。