不知道怎么回事。我的SessionFactory是在这个类中(ServiceForAdminImpl)创建的,大致情况如下
-----------------------------------------------------------------------------------------
public class ServiceForAdminImpl extends ServiceAdapter{
static{
sf = new AnnotationConfiguration().configure().buildSessionFactory();
ServletActionContext.getRequest().getSession().setAttribute("sf", sf); //然后我把它放在session中 }
}
-----------------------------------------------------------------------------------------
另外一个类的情况如下
public class SearchPayRecord extends ServiceAdapter {
public Object listPayRecord(Object obj){
SearchPayRecordAction searchAction = (SearchPayRecordAction)obj;
SessionFactory sf = (SessionFactory) ServletActionContext.getRequest().getSession().getAttribute("sf"); Session session = sf.getCurrentSession();
session.beginTransaction();
AdminInfoBean admin =(AdminInfoBean) ServletActionContext.getRequest().getSession().getAttribute("admin");
Query query = session.createQuery("from PayRecordBean p where p.house.id=:houseId and p.house.admin.id=:adminId")
.setLong("houseId", searchAction.getHouseId())
.setInteger("adminId", admin.getId());
List<PayRecordBean> record = (List<PayRecordBean>)query.list();
session.getTransaction().commit();
return record;
}}-----------------------------------------------------------------------------------------------------
然后服务器就会报could not initialize proxy-no session这个错误
但是如果我把session.getTransaction().commit();注释掉,它就不会报错,这是怎么回事
-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
public class ServiceForAdminImpl extends ServiceAdapter{
static{
sf = new AnnotationConfiguration().configure().buildSessionFactory();
ServletActionContext.getRequest().getSession().setAttribute("sf", sf); //然后我把它放在session中 }
}
-----------------------------------------------------------------------------------------
另外一个类的情况如下
public class SearchPayRecord extends ServiceAdapter {
public Object listPayRecord(Object obj){
SearchPayRecordAction searchAction = (SearchPayRecordAction)obj;
SessionFactory sf = (SessionFactory) ServletActionContext.getRequest().getSession().getAttribute("sf"); Session session = sf.getCurrentSession();
session.beginTransaction();
AdminInfoBean admin =(AdminInfoBean) ServletActionContext.getRequest().getSession().getAttribute("admin");
Query query = session.createQuery("from PayRecordBean p where p.house.id=:houseId and p.house.admin.id=:adminId")
.setLong("houseId", searchAction.getHouseId())
.setInteger("adminId", admin.getId());
List<PayRecordBean> record = (List<PayRecordBean>)query.list();
session.getTransaction().commit();
return record;
}}-----------------------------------------------------------------------------------------------------
然后服务器就会报could not initialize proxy-no session这个错误
但是如果我把session.getTransaction().commit();注释掉,它就不会报错,这是怎么回事
-----------------------------------------------------------------------------------------
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货