Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 配置Spring+;通过JTA休眠JPA事务管理器_Java_Spring_Hibernate_Jpa - Fatal编程技术网

Java 配置Spring+;通过JTA休眠JPA事务管理器

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> 我遇到了一个类似的问题,最终我解决了,正如

我以前使用RESOURCE-LOCAL事务类型配置Hibernate:

persistence.xml:

<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>