Spring 在 SCDF 上执行时批量 Hibernate 配置错误

Spring Batch Hibernate configuration error when execute on SCDF

问题:无法使用 CommandLineJob运行ner 执行 spring 批处理作业,其中应用程序定义了自己的数据源和 Hibernate 配置。

错误消息(提取) DatabaseLookup org.springframework.boot.autoconfigure.orm.jpa.DatabaseLookup getDatabase org.springframework.jdbc.support.MetaDataAccessException: 无法获取用于提取元数据的连接;嵌套异常是 org.springframework.jdbc.CannotGetJdbcConnectionException:无法获得 JDBC 连接;嵌套异常是 org.apache.commons.dbcp.SQLNestedException:无法创建 PoolableConnectionFactory ... Caused by: org.hibernate.HibernateException: 当 'hibernate.dialect' 未设置

时,对 DialectResolutionInfo 的访问不能为空

批处理作业: - SCDF 运行 使用从 spring 网站下载的 docker-compose.yml。 - /config 下的一些属性文件,内置于 jar 中,包括一个定义 "hibernate.dialect=org.hibernate.dialect.MySQLDialect" 的 Hibernate 配置文件 - 应用程序使用以下属性定义自己的数据源

qre.data.driverClassName=org.mariadb.jdbc.Driver
qre.data.url=jdbc:mysql://127.0.0.1:3306/dataflow
qre.data.username=root
qre.data.password=rootpw

试图搜索 SCDF 参考指南,但找不到任何有用的信息。 欢迎任何帮助。

我不确定为什么您的应用程序试图覆盖休眠方言 属性,因为批处理应用程序仍然需要使用 SCDF 的数据源。您可以使用 属性 spring.jpa.properties.hibernate.dialect 覆盖 SCDF 服务器的休眠方言。您可以在文档中查看其中一些示例 here

对配置进行一些更改后,我认为 JDBC url 配置不正确。 将其更改为与 docker-compose.yml、

中相同的值
- SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/dataflow
- SPRING_DATASOURCE_DRIVER_CLASS_NAME=org.mariadb.jdbc.Driver

作业可以 运行 成功。