如何在MySQL中存储Joda DateTime

时间:2015-11-16 23:51:54

标签: spring hibernate jodatime

我最近开始在我的测试项目中使用Joda时间库。 特别是我一直在享受DateTime的功能和操作功能。

我的查询是如何在MySql中存储DateTime。我正在使用Spring& Hibernate用于我的应用程序。

每当我尝试使用它时,我当前的实体都会抛出反序列化错误:

@Entity
@Table(name = "test_storage")
public class TestEntity {
    @Id @GeneratedValue
    private int id;

    @Column
    private DateTime testDate;

    //getters and setters
}

mysql表结构如下:

Name: test_storage
Columns:
id         INT NOT_NULL, AUTO_INCREMENT
testDate   DATETIME

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

如果您正在使用Hibernate 4+,那么您可以采用Jadira用户类型,它们允许您使用不同的策略将DateTime(和其他JODA日期时间相关的类,如LocalDate,LocalDateTime等)映射到DB字段。

您的映射看起来像

public class TestEntity {
    //...

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

阅读文档,了解如何正确使用这些类型以满足您的要求。

您可能很快面临的最大陷阱是,由于Java的Date不包含时区信息,也不支持UTC(JODA的用户类型仍需要在内部映射到Timestamp / Date),您可能需要确保方式你的商店提供了适当的信息。例如,要么将日期时间存储为UTC,要么将时区信息存储为单独的字段等,

答案 1 :(得分:0)