使用hibernate 3时,以下代码有效:
<bean id="ivsHibernateWriter"
class="org.springframework.batch.item.database.HibernateItemWriter">
<property name="hibernateTemplate" ref="hibernateTemplate"/>
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean class="org.springframework.orm.hibernate3.HibernateTemplate" id="hibernateTemplate" >
<property name="sessionFactory" ref="sessionFactory" />
</bean>
升级到hibernate 4之后,我的测试失败了:
org.springframework.orm.hibernate4.SessionHolder cannot be cast to org.springframework.orm.hibernate3.SessionHolder
我想过将hibernateTemplate bean更改为与hibernate 4内联,就像这样:
<bean class="org.springframework.orm.hibernate4.HibernateTemplate" id="hibernateTemplate" >
<property name="sessionFactory" ref="sessionFactory" />
</bean>
但是,这个类不存在。
我们应该如何使用Hibernate4和spring Batch?
答案 0 :(得分:0)
现在这是不可能的,因为Spring Batch不支持hibernate4。 您可能会看到有关此https://jira.springsource.org/browse/BATCH-1904
的Jira问题我建议您使用JdbcItemWriters,以防您没有严格的业务要求; imho,hibernate和jpa在春季批次中得不到很好的支持(我理解为什么)。
答案 1 :(得分:0)
我认为Spring Batch对Hibernate 4的支持已经存在。无需在hibernateTemplate
内注入HibernateItemWriter
。只有sessionFactory
注射就足够了。有关详细信息,请查看this link