Я пытаюсь выполнить простую операцию saveOrUpdate с помощью диспетчера транзакций в Hibernate, но контекст не сбрасывается в таблицы БД. Я подозреваю, что Менеджер транзакций не может разрешить конец транзакции и, следовательно, не сбрасывает изменения.
Изменения отражаются в Таблице БД, если session.flush () выполняется явно. Я использую режим сброса по умолчанию, который является AUTO.
Есть несколько других вопросов по SO, в которых говорится об этом, но ни один из них не помог в моем случае.
@Transactional(transactionManager="txManager", readOnly=false)
public Integer setNamesTable(Names names) {
session = getSession();
Integer id = null;
if (session != null) {
try {
id = (Integer) session.save(names);
} catch (Exception ex) {
System.out.println(ex);
}
LOGGER.info("Exiting setNmlAggrTcaPhn");
}
return id;
}
Имейте SiredFactory, как показано ниже,
@Autowired
@Qualifier("hibernateTestAnnotatedSessionFactory")
SessionFactory sfc;
private synchronized Session getSession() {
try {
session = sf.getCurrentSession();
if (session != null) {
return session;
} else {
session = sf.openSession();
}
} catch (HibernateException ex) {
session = sf.openSession();
}
return session;
}