我正在尝试使用Hibernate中的事务管理器执行一个简单的saveOrUpdate操作,但是上下文没有刷新到DB表。我怀疑事务管理器无法解决事务的结束,因此无法刷新更改。
如果显式完成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;
}
具有如下所示的自动连线SessionFactory,
@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;
}