日期:2014-05-19  浏览次数:20680 次

关于hibernate的dao层的问题
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吗 ) 
不知道怎么写了
求大神帮助 稍微具体点``菜鸟

hibernate dao list

------解决方案--------------------
就是你还缺少action层的代码?
还是你需要的是把这个dao层内容给封装出来?
------解决方案--------------------
id放在session里不就完事了。
------解决方案--------------------
HttpServletRequest request = ServletActionContext.getRequest();
request.getSession().setAttribute("userId", userId);

我好奇   你的用户名 密码 不唯一?
怎么还要取list?
------解决方案--------------------
id自增与否和这个没有关系,你放的是没一条记录的id,又不一样的。或者把id放在hidden里面
------解决方案--------------------
引用:
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.set……


你这不是已经取出来了吗、
把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 就知道有没有该用户了、
而且 里面的数据全都查出来了 你想要什么就自己用什么咯