我最近开始在我的测试项目中使用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
有什么建议吗?
答案 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)