0

我正在使用 Wildfly Swarm (2017.11.0) 构建一个应用程序,它要求ZonedDateTime对象以 UTC 格式保存。

目前,我正在使用 ExamplesDS JTA 数据源并配置以下属性:

<property name="hibernate.jdbc.time_zone" value="UTC"/>

由于 Swarm JPA 依赖项将 Hibernate 5.0.x 和 JPA 2.1 声明为依赖项,因此我手动包含

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-core</artifactId>
  <version>5.2.12.Final</version>
</dependency>

<dependency>
 <groupId>javax.persistence</groupId>
 <artifactId>javax.persistence-api</artifactId>
 <version>2.2</version>
</dependency>

并将它们设置为未提供。

但是,Hibernate 完全忽略了该属性,它保留并获取时间戳作为ZonedDateTime本地区域。persistence.xml 中的其他属性被正确识别。

目前,我不确定问题出在哪里以及如何解决。此外,当我使用 jvm 参数运行 Wildfly Swarm 时-Duser.timezone=UTC,没有任何变化。这可能是 ExamplesDS 的问题还是 Wildfly Swarm 忽略了我的依赖声明?如果是这样,我如何确保 Swarm 使用正确的版本?

4

1 回答 1

1

在许多方面,WildFly Swarm 的行为与 WildFly 一样。您不能像这样升级 Hibernate/JPA,也不能升级任何其他 Java EE 规范。

可能有一些方法可以做到这一点,例如直接更改m2repoSwarm uberjar 内部的内容,或者使用子系统和模块进行操作,但你不应该期望它可以完美地工作。

于 2017-11-16T18:52:12.313 回答