【问题标题】:Properly Utilizing Epoch Seconds with JPA in Spring Boot在 Spring Boot 中使用 JPA 正确利用纪元秒数
【发布时间】:2014-12-06 07:38:29
【问题描述】:

我想将数据库中的所有日期存储为纪元秒数,以消除时区的歧义。我正在使用通过 Spring Boot 的启动器之一(JPA 的数据)提供的JpaRepository 接口来持久化我对将存储纪元秒数的实体所做的更改。但是,我在弄清楚如何正确更新所有内容时遇到了一些麻烦。

例如,我有一个表,它有一个Createdcolumn 和一个Modifiedcolumn。很明显,我需要为每个添加的新条目提供 Created 列,并在每次更改现有条目时更新 Modified 列。

我可以在我的表设计中结合使用 MySQL 默认值和 JPA 实体的注释来完成此操作,还是我需要实现一个 Repository 来为我处理此创建/更新?

【问题讨论】:

    标签: java mysql spring hibernate jpa


    【解决方案1】:

    您可以简单地将毫秒存储在 NUMERIC 列中,同时让 OOP 端对 Date 对象进行操作:

    public class MyEntity {
    
        @Column
        private long createdOn;
    
        public Date getCreatedOn() {
            return new Date(createdOn);
        }
    
        public void setCreatedOn(Date createdOn) {
            this.createdOn = createdOn.getTime();
        }
    
    }
    

    【讨论】:

    • 将所有内容仍然存储为纪元秒,在 getter/setter 函数中根据需要转换为毫秒/从毫秒转换是否有意义?
    • 使用毫秒将为您提供最佳的日期/时间精度。您也可以在存储时使用秒,但随后会失去毫秒精度,只有秒精度。
    • 有道理。我会在我的纪元秒内处理它。
    猜你喜欢
    • 1970-01-01
    • 2017-06-05
    • 1970-01-01
    • 1970-01-01
    • 2017-08-02
    • 2014-12-19
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    相关资源
    最近更新 更多