使用Jadira禁用JPA以将时间转换为UTC

时间:2015-08-10 09:58:47

标签: java mysql hibernate jpa jodatime

我正在使用带有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但我不知道该怎么做...

有人有解决方案吗?

0 个答案:

没有答案