最近的一次开发过程中遇到了一个hibernate事务的问题.
业务处理中需要对一张表插入一条数据,然后基于该数据进行一系列的操作.
数据的插入采用的是hibernate 直接操作对象的方式进行.
对数据的该数据的其他操作则是使用存储过程来处理的.
在测试过程中发现存储过程不能访问到该数据.但在该处理执行完后数据库中是有该数据的.
最终发现原因是 插入过程和 存储过程执行不在同一事物中.
变同的方法是在数据插入完后提交事务,然后再执行存储过程.
-----------------------------------------------------------------------------------------------------
Session s = this.getDao().getSessionFactory().openSession();
Transaction tr = s.beginTransaction();
s.persist(Obj);
tr.commit();
s.close();