В настоящий момент для этого потока не активна внешняя транзакция (только постоянные запросы!!)

Здравствуйте, я работал над веб-приложением с 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.

Я застрял слишком долго, есть идеи?

0 ответов

Другие вопросы по тегам