Hibernate uniqueResult方法的使用 – JAVA編程語言程序開發技術文章

以前寫代碼,總免不瞭編寫登陸部分。在獲取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.aiwalls.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(); 
 
}  

發佈留言