2012-04-05 3 views
0

Spring 트랜잭션에서 JPA와 함께 Hibernate를 사용하려고한다. 모두 작동해야하지만 구성에서 뭔가를 놓친 것 같습니다.JPA Hibernate Spring - 트랜잭션이 열리지 않았다.

내 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. 열망하는 가져 오기는 작동하지만 이것은 옵션이 아닙니다.

+0

또한의 EntityManagerFactory의 '<속성 이름 = "packagesToScan"값 = "your.model.package"/>는'의 persistence.xml 파일을 제거하기를 추천 할 것입니다. – JMelnik

답변

0

transactionManager를 가리키는 entityManagerFactory를 지정하십시오.

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