Java中的时间戳无效小时

时间:2015-08-12 14:19:23

标签: java jpa

我在我的Java项目中使用JPA,并且时间戳工作得不好:它只显示2015-08-12 00:00:00.0(这一天是正确的,但小时不是)

@Entity
public class Session implements Serializable {

..
    @Temporal(TemporalType.DATE)
    private Date timestamp;
..

    public Session(String sessionId) {
        super();
        this.sessionId = sessionId;
        this.timestamp = new Date();
    }

    public Session() {
        super();
        this.timestamp = new Date();
    }

}

你知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:4)

您应该使用TemporalType.TIMESTAMP将字段映射到java.sql.Timestamp,因此它还会包含与时间相关的信息,而不仅仅是日期。相比之下,您使用的类型TemporalType.DATE会映射到java.sql.Date,类包含日,月等信息。

因此,您的代码将转换为:

@Entity
public class Session implements Serializable {

   ..
   @Temporal(TemporalType.TIMESTAMP)
   private Date timestamp;
   ..

   public Session(String sessionId) {
       this.sessionId = sessionId;
       this.timestamp = new Date();
   }

   public Session() {
       this.timestamp = new Date();
   }
}