我正在使用带有hibernate 4的JPA 2和带有MySQLConnector 5.1.26的MySQL服务器,一切正常,只有当我在数据库中保存日期时,它会以某种方式节省UTC时间。
这是我的模特课:
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private long id;
@Column
@Type(type="org.jadira.usertype.dateandtime.joda.PersistentLocalDateTime")
private LocalDateTime startTime;
@Column
@Type(type="org.jadira.usertype.dateandtime.joda.PersistentLocalDateTime")
private LocalDateTime endTime;
@Column
@Type(type="org.jadira.usertype.dateandtime.joda.PersistentLocalDateTime")
private LocalDateTime createdDate;
这是我保存到数据库的代码:
@Override
public void save(MyModel model) {
em.getTransaction().begin();
em.persist(model);
em.getTransaction().commit();
}
保存工作正常,它保存到我的数据库,但时间不同。我在UTC + 3中离开,看起来它正在将其转换为UTC。 当我收回价值时,它会恢复到良好的价值。
我正在使用LocalDateTime,因为我首先不关心时区,为什么它会让我转换?
我尝试停用此自动转化的方法:
我尝试过(作为同行Jadira文档):
@Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime",
parameters = { @Parameter(name = "databaseZone", value = "UTC"),
@Parameter(name = "javaZone", value = "jvm")})
没有运气,我写的不是UTC,而是写了jvm。 我也尝试直接在persistence.xml中写这个...仍然没有运气。 我试图将我的默认JVM时区设置为utc,没有运气......
必须有一种方法可以禁用此自动转换为UTC但我不知道该怎么做...
有人有解决方案吗?