我遇到了这个例外:
org.springframework.orm.hibernate4.HibernateSystemException: 请求未知服务[org.hibernate.stat.spi.StatisticsImplementor];嵌套异常是org.hibernate.service.UnknownServiceException: 请求未知服务[org.hibernate.stat.spi.StatisticsImplementor]
当我使用时
session = sessionFactory.openSession();
的{{1}}。
我得到了
org.hibernate.TransactionException:不支持嵌套事务
当我使用session
session = sessionFactory.getCurrentSession()
时。
我该怎么办?
更新
session
课程中的persistUser()
:
UserServiceImpl
这是@Service
public class UserServiceImpl implements UserService<User, Integer>, Serializable {
@Autowired
private UserDao userDao;
@Override
@Transactional()
public boolean persistUser(User entity) {
boolean result;
userDao.openSessionWithTransaction();
result = userDao.persist(entity);
userDao.closeSessionWithTransaction();
return result;
}
...
}
:
userDaoImpl
答案 0 :(得分:1)
如评论中所述,您不需要DAO中任何与交易相关的方法,事实上,它们会导致您的问题。倾向于弹簧声明式事务处理,并将您的服务更改为
@Override
@Transactional()
public boolean persistUser(User entity) {
boolean result;
result = userDao.persist(entity);
return result;
}
这样,您的服务方法将用于事务划分,这意味着事务将在您的方法被调用时启动,并在您的方法结束时提交(或者如果存在异常则回滚)。方法内的所有内容都在一个事务中,不需要编程式事务处理