2012-04-05 86 views
0

我想在Spring事務中使用Hibernate和JPA。所有人都應該工作,但我想我錯過了配置中的一些東西。JPA休眠春天 - 沒有交易打開

我的persistence.xml文件:

<persistence-unit name="pzk" transaction-type="RESOURCE_LOCAL"> 
    <properties> 
     <property name="hibernate.hbm2ddl.auto" value="validate" /> 
     <property name="hibernate.show_sql" value="true" /> 
     <property name="hibernate.transaction.flush_before_completion" 
      value="true" /> 
     <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider" /> 
    </properties> 
</persistence-unit> 

我的DB-context.xml文件:

<bean id="entityManagerFactory" 
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="jpaVendorAdapter"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
      <property name="showSql" value="true" /> 
      <property name="generateDdl" value="true" /> 
      <property name="databasePlatform" value="${db.dialect}" /> 
     </bean> 
    </property>  
</bean> 

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
    destroy-method="close"> 
    <property name="driverClassName" value="${db.driver}" /> 
    <property name="url" value="${db.url}" /> 
    <property name="username" value="${db.username}" /> 
    <property name="password" value="${db.password}" /> 
</bean> 

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
</bean> 


<bean 
    class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /> 

當然,我有<tx:annotation-driven>, <context:annotation-config>,<context:component-scan basepackage="bla.bla.bla">和我的服務被標記爲@Transactional(試圖標記方法,類和兩者)

問題是,當我嘗試使用服務中的模型類的集合時,我得到LazyInitializationException。調試顯示沒有事務正在進行中。你能幫忙嗎?

P.S.渴望提取工作,但這不是一個選項

+0

我也推薦使用entityManagerFactory的''來擺脫persistence.xml文件。 – JMelnik 2012-04-05 06:49:13

回答

0

嘗試指出你的transactionManager應該使用哪個entityManagerFactory。

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactory"/> 
</bean>