java - 未找到产品名称 : [Tibero] 的数据库类型

标签 java spring-boot maven spring-batch tibero

在尝试设置 Spring boot - spring Batch 项目时,我遇到了错误:

我已经检查了 Spring Batch 支持的数据库,但 Tibero 不在列表中。

有没有其他方法可以通过指向 Tibero DB 来完成这项工作...

请参阅下面的错误日志。

Caused by: java.lang.IllegalArgumentException: DatabaseType not found for product name: [Tibero]
    at org.springframework.batch.support.DatabaseType.fromProductName(DatabaseType.java:84) ~[spring-batch-infrastructure-4.2.1.RELEASE.jar:4.2.1.RELEASE]
    at org.springframework.batch.support.DatabaseType.fromMetaData(DatabaseType.java:123) ~[spring-batch-infrastructure-4.2.1.RELEASE.jar:4.2.1.RELEASE]
    at org.springframework.batch.core.repository.support.JobRepositoryFactoryBean.afterPropertiesSet(JobRepositoryFactoryBean.java:183) ~[spring-batch-core-4.2.1.RELEASE.jar:4.2.1.RELEASE]
    at org.springframework.boot.autoconfigure.batch.BasicBatchConfigurer.createJobRepository(BasicBatchConfigurer.java:129) ~[spring-boot-autoconfigure-2.2.6.RELEASE.jar:2.2.6.RELEASE]
    at org.springframework.boot.autoconfigure.batch.BasicBatchConfigurer.initialize(BasicBatchConfigurer.java:97) ~[spring-boot-autoconfigure-2.2.6.RELEASE.jar:2.2.6.RELEASE]
    ... 24 common frames omitted

最佳答案

如果您选中DatabaseType,它将不支持您的数据库 (Tibero)。

public enum DatabaseType {

    DERBY("Apache Derby"),
    DB2("DB2"),
    DB2VSE("DB2VSE"),
    DB2ZOS("DB2ZOS"),
    DB2AS400("DB2AS400"),
    HSQL("HSQL Database Engine"),
    SQLSERVER("Microsoft SQL Server"),
    MYSQL("MySQL"),
    ORACLE("Oracle"),
    POSTGRES("PostgreSQL"),
    SYBASE("Sybase"),
    H2("H2"),
    SQLITE("SQLite");
}

这些是 Spring Batch 开箱即用支持的数据库。 但您可以按照 documentation 注册非标准数据库

由于 Tibero 与 Oracle 完全兼容,您可以像下面一样创建 TiberoBatchConfigurer

@EnableBatchProcessing
public class TiberoBatchConfigurer extends DefaultBatchConfigurer {

  @Autowired
  private DataSource dataSource;
  @Autowired
  private PlatformTransactionManager transactionManager;

  public TiberoBatchConfigurer() {
      super();
  }

  public TiberoBatchConfigurer(DataSource dataSource) {
      super(dataSource);
  }

  @Override
  protected JobRepository createJobRepository() throws Exception {
    JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
    factory.setDataSource(dataSource);
    factory.setDatabaseType("ORACLE");
    factory.setTransactionManager(transactionManager);
    factory.afterPropertiesSet();
    return factory.getObject();
  }
}

关于java - 未找到产品名称 : [Tibero] 的数据库类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61266208/

相关文章:

java - 当元素出现Selenium+Java时,如何在每次测试中每次调用方法?

java - 更改 JavaFX 文本区域中所选内容的前景色

java - 从 Java 中的字段中提取多个泛型类型

java - 类未在 spring-boot 中实例化(j2EE 到 spring-boot 迁移)

java - 使用loci.plugins(生物格式)时出现SLF4J version_mismatch错误

java - ANTLR4 运行时 JAR

JavaFX如何将文本写入textArea中的新行?

java - 测量 Tomcat 的关机间隔

java - Spring boot graphql 在类路径上找不到 graphql 模式文件

java - 通常为不同的项目创建一个父POM吗?