org.hibernate.service.UnknownServiceException:请求未知服务[org.hibernate.stat.spi.StatisticsImplementor]

时间:2015-03-25 09:37:22

标签: java spring hibernate session

我遇到了这个例外:

  

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

1 个答案:

答案 0 :(得分:1)

如评论中所述,您不需要DAO中任何与交易相关的方法,事实上,它们会导致您的问题。倾向于弹簧声明式事务处理,并将您的服务更改为

@Override
@Transactional()
public boolean persistUser(User entity) {
    boolean result;
    result = userDao.persist(entity);
    return result;
}

这样,您的服务方法将用于事务划分,这意味着事务将在您的方法被调用时启动,并在您的方法结束时提交(或者如果存在异常则回滚)。方法内的所有内容都在一个事务中,不需要编程式事务处理