java - Java 中的时间戳无效时间

标签 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();
    }

}

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

最佳答案

你应该使用 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();
   }
}

关于java - Java 中的时间戳无效时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31967902/

相关文章:

java - 使用 JPA 存储/读取日期时出现时区相关问题

java - 尝试连接到 https Web 服务时出现 "Received fatal alert: handshake_failure"

java - 变量在打印出来之前不会更新?

java - 无需强制转换即可将值添加到 HashMap

JPA 连接父/子@OneToMany 的表名

java - 如何使用 Playframewok JPA 执行批量插入?

java - 将数据库更改与 hibernate 映射文件同步的最佳实践

java - 两张 map 之间的差异

java - 我的第一个 hibernate 程序出现错误,请帮助我解决错误

java - JPA/Hibernate5 通过序列名获取序列nextval