提问者:小点点

如何将附加参数传递给MariaDB连接字符串以修复时区问题(例如useLegacyDatetimeCode)


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

然而:由于我在我的Java代码中大量使用ZonedDateTime-Object,我还包含在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/-

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


共1个答案

匿名用户

如果将Spring on CloudFoundry与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);
}