Java 配置Spring+;通过JTA休眠JPA事务管理器
我以前使用RESOURCE-LOCAL事务类型配置Hibernate: persistence.xml:Java 配置Spring+;通过JTA休眠JPA事务管理器,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我以前使用RESOURCE-LOCAL事务类型配置Hibernate: persistence.xml: <persistence-unit name="myPU" transaction-type="JTA"> <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> </persistence-unit> 我遇到了一个类似的问题,最终我解决了,正如
<persistence-unit name="myPU" transaction-type="JTA">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
</persistence-unit>
我遇到了一个类似的问题,最终我解决了,正如您在这个小演示中看到的: 参考[1],我更喜欢在JTA之前使用Spring的事务支持 此外,我还使用了基于注释的方法
[1] 我建议将bean重命名
,显然这是行不通的。您指定要使用JTA,但在配置中使用本地事务。要么更改您的persistence.xml
要么正确配置JTA事务。@M.Deinum我要问的只是:如何正确配置它为什么需要JTA没有任何东西阻止您在glassfish上使用本地事务。这就是我想说的一点,如果它不能与本地资源一起工作,那是因为你的设置是错误的。如果你不需要JTA,那么就不要使用JTA。尼斯玻璃鱼也在尝试引导JPA。他们在竞争。只需删除persistence.xml
您在Spring中不需要它,或者重命名它并将persistenceXml
属性添加到LocalContainerEntityManagerFactoryBean
以指定文件的新名称/位置。最简单的方法就是将其移除。
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager" p:entityManagerFactory-ref="entityManagerFactory"></bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="jpaVendorAdapter" ref="jpaAdapter" />
<property name="persistenceUnitName" value="myPU"/>
<property name="jpaProperties">
<props>
<prop key="javax.persistence.validation.mode">none</prop>
</props>
</property>
</bean>
<bean id="entityManager" class="org.springframework.orm.jpa.support.SharedEntityManagerBean">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="sessionFactory" class="org.springframework.orm.jpa.vendor.HibernateJpaSessionFactoryBean">
<property name="entityManagerFactory" ref="entityManagerFactory" />
<!-- Are there any other properties required? -->
</bean>
<bean id="jpaAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="true" />
<property name="generateDdl" value="false" />
</bean>
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/CNTXESDB" />
<property name="lookupOnStartup" value="true" />
<property name="cache" value="true" />
<property name="proxyInterface" value="javax.sql.DataSource" />
</bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="jpaVendorAdapter" ref="jpaAdapter" />
<property name="persistenceUnitName" value="myPU"/>
<property name="persistenceXmlLocation" value="classpath:META-INF/my_persistence.xml" />
<property name="jpaProperties">
<props>
<prop key="javax.persistence.validation.mode">none</prop>
</props>
</property>
</bean>