Ming Leung
Ming Leung

Reputation: 385

hibernate query works in main but not in gwt dao

I am using hibernate and gwt. If I run the query in the main, the query returns the expected records. But if I do the same query in a DAO, called by the web application methods, the result is always empty. It did work a few days ago, and I have not changed anything with this table. Is there any way I can trace it?

Thanks

Upvotes: 0

Views: 66

Answers (1)

Ming Leung
Ming Leung

Reputation: 385

From RPC, runs userinfodao.getUserinfoBySessId always return empty recordset.

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");   
    }
}

*method from UserinfoDAO, that always doesn't work in gwt web app, but it is fine on main *

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;
    }
}

Run from main, it works as expected

        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());
}

Upvotes: 1

Related Questions