Spring Batch不支持我的数据库Sap Hana db。我正在寻找关于如何为SpringBatch的SimpleJobRepository实现我自己的DAO的指南。之前尝过这个吗?
我没有包含数据库类型属性,因为根据spring批量网站 不包括它将自动搜索数据库类型。我还使用了JobRepositoryFactoryBean 因为db不受支持。
我很兴奋为此编写自己的实现,也许我可以贡献它 春季批次来源。
我的设置如下:
<bean id="jobRepository"
class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="transactionManager" ref="transactionManager" />
<property name="isolationLevelForCreate" value="ISOLATION_DEFAULT" />
<property name="validateTransactionState" value="false"/>
</bean>
目前我收到以下错误:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jobRepository' defined in ServletContext resource [/WEB-INF/batch-context.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: DatabaseType not found for product name: [HDB]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1482)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:323)
... 59 more
Caused by: java.lang.IllegalArgumentException: DatabaseType not found for product name: [HDB]
at org.springframework.batch.support.DatabaseType.fromProductName(DatabaseType.java:79)
at org.springframework.batch.support.DatabaseType.fromMetaData(DatabaseType.java:110)
at org.springframework.batch.core.repository.support.JobRepositoryFactoryBean.afterPropertiesSet(JobRepositoryFactoryBean.java:182)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1541)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1479)
... 66 more
答案 0 :(得分:3)
Spring Batch 3提供了注入自定义数据库类型的机会。
检查DatabaseType和JobRepositoryFactotyBean.setDatabaseType()(而不是让SB从数据源自动检测数据库类型)。
当然,您需要为元数据表创建创建脚本(使用this博客文章作为示例和official doc)
答案 1 :(得分:1)
我设法通过实现我自己的DataFieldMaxValueIncrementerFactory和我自己的DatabaseType来解决上面的问题,然后我将值自动装配到SimpleJobServerFactory。