文章出處

以前寫代碼,總免不了編寫登陸部分。在獲取user的時候,只可能返回一個user實例,或者為null。以前使用以下方法實現。
public User get(String id){  
    Session session=HibernateUtil.getSessionFactory().openSession();  
    String hql="from User u where u.id = ?";  
    List list=session.createQuery(hql).setString(0, id).list();  
    if (list.size()==1){  
        return (User)list.get(0);  
    }else{  
        return null;  
    }  
}  
[java] 
public User get(String id){  
    Session session=HibernateUtil.getSessionFactory().openSession();  
    String hql="from User u where u.id = ?";  
    List list=session.createQuery(hql).setString(0, id).list();  
    if (list.size()==1){  
        return (User)list.get(0);  
    }else{  
        return null;  
    }  
}  
 昨天重讀hibernate的參考手冊,發現query接口提供了一個更好的方法用來獲取實例,當返回的實例明確只有一個或者為null的時候。
uniqueResult
public Object uniqueResult()throws HibernateException返回:單個實例或者null拋出:當返回的實例大于一個的時候的拋出NonUniqueResultException對應的使用方法如下:

[java]  www.2cto.com
public User get(String id){  
Session session=HibernateUtil.getSessionFactory().openSession();     
String hql="from User u where u.id=?";     
return (User)session.createQuery(hql).setString(0, id).uniqueResult(); 
 
}  

原:http://www.2cto.com/kf/201209/155644.html


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()