В настоящий момент для этого потока не активна внешняя транзакция (только постоянные запросы!!)
Здравствуйте, я работал над веб-приложением с Spring 4 и EclipseLink на сервере GlassFish. Я использую сервер wampserver для сервера MySQL и пул соединений на GlassFish.
Вот моя настойчивость.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.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_2_0.xsd">
<persistence-unit name="NetworkAdministrationBD_pu" transaction-type="JTA">
<jta-data-source>networkadminDB2</jta-data-source>
<class>tn.insat.entities.Administrateur</class>
<class>tn.insat.entities.Responsable</class>
</persistence-unit>
</persistence>
Мой компонент DAO "AdministrateurDAOImpl" помечен @Repository("administratorteurDao")
Мой весенний конфигурационный XML-файл:
<context:annotation-config/>
<context:component-scan base-package="tn.insat.dao" />
<context:component-scan base-package="tn.insat.web"/>
<context:component-scan base-package="tn.insat.service"/>
<tx:annotation-driven/>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="NetworkAdministrationBD_pu"/>
</bean>
...
EntityManager правильно внедряется в bean-компонент adminrateurDao:
private EntityManager em;
@PersistenceContext
public void setEm(EntityManager em) {
this.em = em;
}
Объект "administratorteurDao" работает нормально, когда непостоянные запросы выполняются в JPQL или напрямую через метод EntityManager ( em.find())
Однако, когда выполняются постоянные запросы (такие как em.remove()), я получаю вышеупомянутое исключение.
Форма удаления метода "administratorteurDao" выглядит следующим образом:
try{
Query query = em.createQuery("DELETE FROM Administrateur a WHERE a.id = :id");
query.setParameter("id", id);
query.executeUpdate();
}
catch (Exception e){
throw new DAOException() ;
}
После некоторой отладки и тестов я обнаружил, что ошибка выдается на
query.executeUpdate();
командование
Я не знаю, уместно ли это, но компонент GWT RPC также использует bean-компонент репозитория "administratorrateurDao".
Я изучил все вопросы и документацию в Интернете, и ни один из них не предложил решение, не меняя тип транзакции с JTA на RESOURCE_LOCAL или переключая слой постоянства дыр.
Также добавление аннотации @Transactional вызывает еще одно исключение:
Exception Description: Cannot use an EntityTransaction while using JTA.
Я застрял слишком долго, есть идеи?