3

Je déploie une application Spring-Boot pour Swisscom AppCloud qui utilise un service MariaDB. Le service est automatiquement configuré dans mon application à l'aide des connecteurs CloudFoundry et la connexion fonctionne correctement.Comment passer des paramètres supplémentaires à la chaîne de connexion MariaDB pour corriger le problème de fuseau horaire (par exemple useLegacyDatetimeCode)

Cependant: depuis que je l'utilise beaucoup ZonedDateTime-objets dans mon code java, j'ai aussi inclus dans le pom.xml ...

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

... pour préserver correctement les ZonedDateTimes dans la base de données.

Cela fonctionne très bien sur mon MariaDB locale, quand j'ajoute ...

...?useLegacyDatetimeCode=false 

... à la chaîne de connexion (tel que décrit ici: https://moelholm.com/2016/11/09/spring-boot-controlling-timezones-with-hibernate/ -> « CONSEIL BONUS: Obtenir la configuration Hibernate pour avec MariaDB/MySQL ").

Comment ajouter ce drapeau (et peut-être aussi d'autres) à la connexion au service MariaDB sur Swisscom AppCloud?

Répondre

5

Si vous utilisez Spring sur CloudFoundry en liaison avec une liaison de MariaDB, la source de données est automatiquement configuré par ce mécanisme: https://docs.cloudfoundry.org/buildpacks/java/spring-service-bindings.html

C'est alimenté par le projet connecteurs nuage de printemps, which you can customize to your needs.

Je n'ai pas testé, mais vous devriez être en mesure de définir les propriétés du pilote comme suit:

@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); 
}