2012-11-26 60 views
0

當使用Hibernate 3,下面的代碼工作:如何在Spring Batch 2和Hibernate 4中使用HibernateItemWriter?

<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後,我的測試failes與此異常:

org.springframework.orm.hibernate4.SessionHolder cannot be cast to org.springframework.orm.hibernate3.SessionHolder 

我想改變的HibernateTemplate bean是內嵌的休眠4,像這樣:

<bean class="org.springframework.orm.hibernate4.HibernateTemplate" id="hibernateTemplate" > 
    <property name="sessionFactory" ref="sessionFactory" /> 
</bean> 

但是,這個類不存在。

我們應該如何使用Hibernate4和spring批處理?

回答

0

這是不可能的,因爲Spring Batch不支持hibernate4。 您可能會看到有關此問題的Jira問題https://jira.springsource.org/browse/BATCH-1904

如果您沒有嚴格的業務要求,我建議使用JdbcItemWriters;在春季批次中,imho,hibernate和jpa得不到很好的支持(我理解爲什麼)。

+2

從Spring Batch版本2.2.0開始支持Hibernate 4。 – mwalter

0

我認爲Spring Batch對Hibernate 4的支持已經存在。 HibernateItemWriter內無需注入hibernateTemplate。只有sessionFactory注射就足夠了。有關更多詳細信息,請查看this link

相關問題