3

我正在向使用 MariaDB 服务的 Swisscom AppCloud 部署一些 spring-boot 应用程序。该服务使用 CloudFoundry 连接器在我的应用程序中自动配置,并且连接工作正常。

但是:由于我在我的 Java 代码中大量使用 ZonedDateTime-Objects,我也将其包含在 pom.xml 中...

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-java8</artifactId>
    </dependency>

...正确保存数据库中的 ZonedDateTimes。

这在我本地的 MariaDB 上运行良好,当我添加...

    ...?useLegacyDatetimeCode=false

...到连接字符串(如此处所述:https ://moelholm.com/2016/11/09/spring-boot-controlling-timezones-with-hibernate/->“奖励提示:让 Hibernate 配置正常工作与 MariaDB / MySQL")。

如何将此标志(可能还有其他标志)添加到与 Swisscom AppCloud 上的 MariaDB 服务的连接?

4

1 回答 1

5

如果您将 CloudFoundry 上的 Spring 与 MariaDB 绑定一起使用,则数据源会通过此机制自动配置:https ://docs.cloudfoundry.org/buildpacks/java/spring-service-bindings.html

这由 Spring 云连接器项目提供支持,您可以根据需要对其进行自定义

我没有测试它,但是您应该可以按如下方式设置驱动程序属性:

@Bean
public DataSource dataSource() {
    PoolConfig poolConfig = new PoolConfig(5, 30, 3000);
    ConnectionConfig connConfig = new ConnectionConfig("useLegacyDatetimeCode=false");
    DataSourceConfig dbConfig = new DataSourceConfig(poolConfig, connConfig);
    return connectionFactory().dataSource(dbConfig);
}
于 2017-03-16T20:58:22.737 回答