这个问题也是郁闷, 也就是说Session被关闭了, 而这个Session又是必须的.
关键是我并没有关闭, 也找不到是哪里被关闭了的.
我把代码改成如下的样子, 则是可以运行的, 在执行之前,开启事务
/**
* 查询用户
* @param uid
* @return
*/
@Override
public User get(Integer uid) {
Transaction transaction = session.beginTransaction();
User user = null;
try {
user = session.get(User.class,uid);
} catch(Exception e) {
e.printStackTrace();
}
return user;
}
原因分析: 每次调用了session之后, 在事务提交了以后就会把session关闭
这是因为Hibernate会维护这个Session, 在我提交事务的时候关闭Session
解决思路: 1. 在代码执行之前, 开启Session;
2. 在业务处理结束的时候再关闭Transaction事务