/ / Jak mogę skonfigurować szklaną rybę do używania menedżerów jednostek zarządzanych przez aplikację? - wiosna, transakcje, glassfish

Jak mogę skonfigurować szklaną rybę do korzystania z menedżerów zarządzających aplikacjami? - wiosna, transakcje, glassfish

Jak skonfigurować szklaną rybę do korzystania z menedżerów jednostek zarządzanych przez aplikację? Otrzymuję następujący błąd w konfiguracji podanej poniżej.

Nie chcę, aby glassfish zarządzał transakcjami, chcę używać tylko transakcji zarządzanych wiosną z ustawieniem RESOURCE_LOCAL, a nie JTA, w jednostce trwałości

SEVERE: Exception while preparing the app : The persistence-context-ref-name [org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean/entityManager] .... resolves to a persistence unit called [spring-jpa] which is of type RESOURCE_LOCAL. Only persistence units with transaction type JTA can be used as a container managed entity manager. Please verify your application.

Moja Cofiguracja:

<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="spring-jpa" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<non-jta-data-source>mysql/mydb</non-jta-data-source>
<properties/>
</persistence-unit>
</persistence>

Mój kontekst aplikacji:

<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">

<context:component-scan base-package="com.myproject"/>
<jpa:repositories base-package="com.myproject"/>
<tx:annotation-driven transaction-manager="transactionManager"/>
<bean id="dataSource"
//....
</bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="persistenceUnitName" value="spring-jpa" />
<property name="jpaVendorAdapter">
<!--  <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">-->
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="true" />
<property name="generateDdl" value="true" />
<property name="database" value="MYSQL" />
<property name="databasePlatform" value="org.hibernate.dialect.MySQL5Dialect"/>
</bean>
</property>
</bean>


<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

</beans>

Odpowiedzi:

2 dla odpowiedzi № 1

znalazłem ten post na forum, Cytuję:

W środowisku Java EE, jeśli ten element [typ transakcji] nie jest określono, domyślnie jest to JTA. Jeśli tak, w środowisku Java SE element nie jest określony, można założyć domyślną wartość RESOURCE_LOCAL.

Więc w swojej konfiguracji spróbuj:

<persistence-unit name="spring-jpa" transaction-type="JTA">