hibernate查询在main中工作但不在gwt dao中工作

时间:2014-03-11 18:57:59

标签: hibernate gwt

我正在使用hibernate和gwt。如果我在main中运行查询,查询将返回预期的记录。 但是,如果我在DAO中执行相同的查询(由Web应用程序方法调用),则结果始终为空。它几天前确实有效,我没有用这张表改变任何东西。有什么方法可以追踪它吗?

由于

1 个答案:

答案 0 :(得分:1)

从RPC运行userinfodao.getUserinfoBySessId始终返回空记录集。

public void clearlogin()
{
    HttpSession session = getThreadLocalRequest().getSession();
    UserinfoDAO userinfodao = new UserinfoDAO();
    if(session != null)
    {
        Userinfo userinfo = userinfodao.getUserinfoBySessId(session.getId());
        userinfodao.removeUserinfo(userinfo.getOid());
        session.invalidate();
    }
    else
    {
        LogUtils.logInfo("Session has already been removed");   
    }
}
来自UserinfoDAO的

* 方法,它始终不适用于gwt网络应用程序,但它在主*上很好

public Userinfo getUserinfoBySessId(String _sessId)
{
    try
    {
        if(!session.isOpen())
        {
            session = HibernateUtil.getSessionFactory().openSession();
        }
        LogUtils.logInfo("UserinfoDAO.getUserinfoBySessId " + _sessId );
        session.beginTransaction();
        String hql="from Userinfo userinfo where userinfo.sessId = :sessId";
        Query query = session.createQuery(hql);
        query.setString("sessId", _sessId);
        List list=query.list();
        Userinfo tmpUserinfo=null;
        Iterator it=list.iterator();
        while(it.hasNext())
        {
            tmpUserinfo=(Userinfo)it.next();
        }
        return tmpUserinfo;
    }
    catch(Exception e)
    {
        return null;
    }
}

从main运行,按预期工作

        public static void main(String[] args)
{
    UserinfoDAO userinfodao=new UserinfoDAO();

    Userinfo userinfo = new Userinfo();
    userinfo.setIp("172.16.95.102");
    userinfo.setTm(new Date());
    userinfo.setSessId("F30B837B52BB3E47D18B67A856C6A5AC");
    userinfo.setUsername("peter");
    userinfo.setAcctOid(111);
    userinfodao.insertUserinfo(userinfo);

    Userinfo userinfo1 = userinfodao.getUserinfoBySessId("F30B837B52BB3E47D18B67A856C6A5AC");
    System.out.println(userinfo1.getAcctOid());
}