0

使用休眠 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>

升级到休眠 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?

4

2 回答 2

1

我认为 Spring Batch 对 Hibernate 4 的支持已经存在。无需注入hibernateTemplate内部HibernateItemWriter。仅sessionFactory注射就足够了。有关更多详细信息,请查看此链接

于 2014-12-11T21:06:27.110 回答
0

目前这是不可能的,因为 Spring Batch 不支持 hibernate4 。您可能会看到有关此https://jira.springsource.org/browse/BATCH-1904的 Jira 问题

如果您没有严格的业务要求,我建议您使用 JdbcItemWriters;恕我直言,hibernate 和 jpa 在 Spring Batch 中的支持很差(我明白为什么)。

于 2012-11-27T07:39:12.940 回答