@Transactional
аннотация не работает для меня в проекте спрингбут-спящий.Я использую конфигурацию аннотации, для которой я сделал следующую конфигурацию.Я попытался использовать @Transactional
на метод и имя класса в слое обслуживания, а также в слое дао, но не повезло.Я думаю, что есть некоторая проблема с конфигурацией диспетчера транзакций, но я не могу понять, как настроить диспетчер транзакций в моем приложении.
application.properties
#spring configuration
spring.jpa.show-sql = true
#spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.hibernate.ddl-auto=update
#spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate5.SpringSessionContext
dao
@Autowired
private EntityManagerFactory entityManagerFactory;
@Override
public void deleteSMS(String id) {
logger.info("Delete sms details with id :: \"" + id + "\"");
Session session = null;
try {
session = entityManagerFactory.unwrap(SessionFactory.class).openSession();
SMSDetails smsDetails = session.get(SMSDetails.class, Long.parseLong(id));
if (smsDetails != null)
session.delete(smsDetails);
} catch (Exception e) {
logger.error("Error occured while deleting the sms with id :: \"" + id + "\" :: " + e.getMessage());
throw e;
} finally {
if (session != null)
session.close();
}
}
service
@Override
@Transactional
public void deleteSMS(String id) {
smsDao.deleteSMS(id);
}
Я использую весеннюю загрузку 2.1.3 и спящий режим.Я сконфигурировал управление сущностями, как указано выше, и использовал следующее для получения сеанса
session = entityManagerFactory.unwrap(SessionFactory.class).openSession();
, но @Transactional
не работает