try{
 tx = session.getTransaction();
tx.begin();
 
Query q = session.
     createQuery("select p.id from Person p where p.username=:username and p.password=:password");
 
    q.setString("username",person.getUsername());
    q.setString("password", person.getPassword());
   
    List record =q.list();
    
    if (null !=record&&record.size() != 0) {
    
     result = true;
    
    
    }else{ result = false;}     tx.commit();这是我dao层的接口  验证登陆的代码 好用
我想在通过验证username password的时候 如果成功 取得这行的id 并存入一个变量(能把id存入我dto(person)中的id吗 ) 
不知道怎么写了
求大神帮助 稍微具体点``菜鸟
hibernatedaolist

解决方案 »

  1.   

    就是你还缺少action层的代码?
    还是你需要的是把这个dao层内容给封装出来?
      

  2.   

    我是action-service-dao结构的ssh
    想做个登陆并修改数据库的最后一次登陆时间
    先验证登陆 然后返回service层调用dao层update方法修改时间 再返回页面
    到修改时间这我想法是如果登陆成功就取得这条数据的id 直接根据id修改使劲就ok了
    但是不知道怎么取id
      

  3.   

    HttpServletRequest request = ServletActionContext.getRequest();
    request.getSession().setAttribute("userId", userId);我好奇   你的用户名 密码 不唯一?
    怎么还要取list?
      

  4.   

    我的id是自增的 我想知道怎么从数据库查询username password后 得到id 根据id修改时间
      

  5.   

    id自增与否和这个没有关系,你放的是没一条记录的id,又不一样的。或者把id放在hidden里面
      

  6.   


    你这不是已经取出来了吗、
    把hql 改改 from Person p where p.username=:username and p.password=:password
    返回一个person不就可以了吗Person person = null;
    try{
     
     
    Query q = session.
         createQuery("select p.id from Person p where p.username=:username and p.password=:password");
     
        q.setString("username",person.getUsername());
        q.setString("password", person.getPassword());
       
        List record =q.list();
        
        if (null != record && !record.isEmpty() ) {
        
          person = (Person)record.get(0);
        
        
        }
    }finally{
        session.clear();
        session.close();
    }
    return person;你根据该方法返回的dto(person) 是否为null 就知道有没有该用户了、
    而且 里面的数据全都查出来了 你想要什么就自己用什么咯另外select查询 不需要事务的 
    不用begin 和commit。
      

  7.   


    "select p.id from Person p where p.username=:username and p.password=:password"
    改为:
     from Person p where p.username=:username and p.password=:password
      

  8.   

    哦 hibernate还不太熟悉 大概明白了 我记得网上说ssh查询似乎也要事务 否则报错 没4过 
    再麻烦下 我想在这个person表中存入当前时间lasttime 有什么方便得方法吗?
     我得想法是这样
    if (null !=record&&record.size() != 0) {
         //更新最后一次登陆时间
         Query t = session.
              createQuery("update  person set lasttime=('now()')");           result = true;          
        }else{ result = false;}
    但是报错org.hibernate.hql.internal.ast.QuerySyntaxException: person is not mapped [update  person set lasttime=('now()')]
    求指点
      

  9.   

    这样改就是把数据存入person对象p中吗? 然后能取得这条数据所有信息?
      

  10.   


    hibernateTemplate有saveOrUpdate你把时间setter 到dto里带着id 保存即可
      

  11.   


    是查询到该用户的数据  拿出来封装到你的dto person里。另外hibernate 并不识别 一些数据常用的函数 。需要你自己注册函数写个方法继承自该数据库的方言  registeredFunction 即可
      

  12.   

    另外hibernate 并不识别 一些数据常用的函数 。需要你自己注册函数写个方法
      

  13.   

    哦这样 谢谢啊 我用的hibernate4 不支持template了谢谢
      

  14.   

    也不知道你从哪里看来的DAO是这么写的,跟本就不对!事务是在业务层管理的,怎么能写在DAO层呢