Я использую 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]