Блокировка весенних транзакций при выполнении запроса Hibernate - PullRequest
0 голосов
/ 31 декабря 2018

Я использую Spring Boot 2.0 и Hibernate версии 4.3.5.Я написал тестовый пример junit, который блокируется при выполнении запроса гибернации.Реализация сервиса выглядит следующим образом:

@Override
@Transactional
public void deleteAllEmployeesForDept(Long dptId) {
    entityManager.createQuery("DELETE FROM " + Person.class.getName() +
            " WHERE dptId=:dptId").setParameter("dptId", dptId).
            executeUpdate();
}

Ниже приведен тестовый класс -

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class PersonServiceTest extends TestSupport {

@Autowired
private PersonService personService;

    @Before
    public void init() {
        Person p = createPerson();

        personService.save(p);

    }


    @Test
    public void testDelete() {
        personService.deleteAllEmployeesForDept(1l);
    }

}

Пружинные бобы xml определяются следующим образом

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

    <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>

    <bean id="personService"
              class="com.mypackage.service.definition.PersonServiceImpl"/>

    <bean id="entityBasePackages" class="java.lang.String">
        <constructor-arg value="com.mypackage"/>
    </bean>

</beans>

Мы используемJPATransactionManager.Удалить тестовый пример зависает.При включении журналов транзакций для пакета (org.springframework.orm.jpa) я вижу, что синхронизация beforeCommit не выполняется.Есть мысли о том, что может быть не так?

09:15:14.253 DEBUG [main][o.s.o.jpa.JpaTransactionManager] Creating new transaction with name [com.mypackage.service.definition.PersonServiceImpl.save]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT
09:15:14.254 DEBUG [main][o.s.o.jpa.JpaTransactionManager] Opened new EntityManager [org.hibernate.jpa.internal.EntityManagerImpl@421d54b3] for JPA transaction
09:15:14.254 DEBUG [main][o.s.o.jpa.JpaTransactionManager] Exposing JPA transaction as JDBC [org.springframework.orm.jpa.vendor.HibernateJpaDialect$HibernateConnectionHandle@63f40ca0]
09:15:14.268 TRACE [main][o.s.o.jpa.JpaTransactionManager] Triggering beforeCommit synchronization
09:15:14.268 TRACE [main][o.s.o.jpa.JpaTransactionManager] Triggering beforeCompletion synchronization
09:15:14.268 DEBUG [main][o.s.o.jpa.JpaTransactionManager] Initiating transaction commit
09:15:14.268 DEBUG [main][o.s.o.jpa.JpaTransactionManager] Committing JPA transaction on EntityManager [org.hibernate.jpa.internal.EntityManagerImpl@421d54b3]
09:15:14.271 TRACE [main][o.s.o.jpa.JpaTransactionManager] Triggering afterCommit synchronization
09:15:14.271 TRACE [main][o.s.o.jpa.JpaTransactionManager] Triggering afterCompletion synchronization
09:15:14.271 DEBUG [main][o.s.o.jpa.JpaTransactionManager] Closing JPA EntityManager [org.hibernate.jpa.internal.EntityManagerImpl@421d54b3] after transaction
09:15:14.271 DEBUG [main][.s.o.j.EntityManagerFactoryUtils] Closing JPA EntityManager
09:15:14.271 DEBUG [main][o.s.o.jpa.JpaTransactionManager] Creating new transaction with name [com.mypackage.service.definition.PersonServiceImpl.deleteAllEmployeesForDept]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT
09:15:14.271 DEBUG [main][o.s.o.jpa.JpaTransactionManager] Opened new EntityManager [org.hibernate.jpa.internal.EntityManagerImpl@20d19f2c] for JPA transaction
09:15:14.272 DEBUG [main][o.s.o.jpa.JpaTransactionManager] Exposing JPA transaction as JDBC [org.springframework.orm.jpa.vendor.HibernateJpaDialect$HibernateConnectionHandle@45592af7]
...