Reputation: 385
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
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