Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate将时间戳映射为可序列化_Java_Oracle_Hibernate - Fatal编程技术网

Java Hibernate将时间戳映射为可序列化

Java Hibernate将时间戳映射为可序列化,java,oracle,hibernate,Java,Oracle,Hibernate,我正试图在我的新项目中设置hibernate,我遇到了这个问题。我正在使用oracle数据库 在一些表中,我有多个列是时间戳 Hibernate将此列映射为可序列化 我试图手动更改为LocalTime类型,但项目甚至无法运行。我更改了Availability.java和Availability.hbm.xml 它应该是可序列化的吗?我想改用LocalTime。有办法做到这一点吗 我找到了这个:。但那是5年前的事了,这似乎是一个复杂的解决方案 public class Availability

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

在一些表中,我有多个列是时间戳

Hibernate将此列映射为可序列化

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

它应该是可序列化的吗?我想改用LocalTime。有办法做到这一点吗

我找到了这个:。但那是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;
    }
}
尝试添加到您的项目中。问题是,
LocalTime
是一个Java8类,默认情况下,
Hibernate
不支持该类。

您可以使用:

  private Timestamp initialhour;
如果您想添加注释,可以添加注释,但如果没有注释,它应该可以正常工作:

 @Temporal(TemporalType.TIMESTAMP)
 private Timestamp initialhour;
如果要使用java 8 DateTime,可以使用@Type注释,类似于:

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

同样的情况也发生在我身上,对于“interval to day”数据类型,我发现手动解决这个问题的最简单方法是将“Serializable”替换为“Timestamp”,虽然不是很干净,但对我来说很有效