Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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反序列化NativeQuery中的日期时间_Java_Json_Jackson_Jodatime - Fatal编程技术网

无法使用Java/Hibernate反序列化NativeQuery中的日期时间

无法使用Java/Hibernate反序列化NativeQuery中的日期时间,java,json,jackson,jodatime,Java,Json,Jackson,Jodatime,简化示例 我运行带有日期的本机查询: SELECT id, start FROM event; 我做了一个SqlResultSetMapping,如下所示: @SqlResultSetMapping( name="EventMapping", classes={ @ConstructorResult( targetClass=de.teamsystems.domain.Overvie

简化示例

我运行带有日期的本机查询:

SELECT id, start FROM event;
我做了一个SqlResultSetMapping,如下所示:

@SqlResultSetMapping(
        name="EventMapping",
        classes={
                @ConstructorResult(
                        targetClass=de.teamsystems.domain.OverviewEvent.class,
                        columns={
                                @ColumnResult(name="id", type = Long.class ),    
                                @ColumnResult(name="start", type = DateTime.class )

                        }
                )
        }
)
我的OverviewEvent类看起来像:

@Entity
public class OverviewEvent  {

    @Id
    private Long id;

    private String name;


    private DateTime start;

    public Long getId() {
        return id;
    }

    public DateTime getStart() {
        return start;
    }

    public OverviewEvent(Long id, DateTime start) {
        this.id = id;
        this.start = start;
    }
}

当我在控制器中执行此代码时,会出现以下异常:

{
    "error": "Internal Server Error",
    "exception": "javax.persistence.PersistenceException",
    "message": "org.hibernate.type.SerializationException: could not deserialize",
    "path": "/event",
    "status": 500,
    "timestamp": "2017-03-13T22:22:30.527+0100"
}
日志文件显示:

2017-03-13 22:22:30.523 ERROR 23479 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is javax.persistence.PersistenceException: org.hibernate.type.SerializationException: could not deserialize] with root cause

java.io.StreamCorruptedException: invalid stream header: 32303137
    at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:808) ~[na:1.8.0_111]
当我在OverviewEvent类和SqlResultSetMapping中将DateTime更改为字符串时,它就起作用了。但是我想使用datetime格式

有人能帮我解决这个问题吗。我尝试了不同的方法,例如:

@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentDateTime")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private DateTime start;
但例外情况依然如此。感谢您的帮助。

尝试使用Date java.util.Date代替DateTime:


或者为DateTime创建自定义反序列化程序。

谢谢。今天晚上,当我再次参与这个项目时,我会尝试一下。因为我是一个新手,这就是你所说的:工作。谢谢
  @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
  private Date start;