1. 程式人生 > >Query介面的uniqueResult()方法

Query介面的uniqueResult()方法

以前寫程式碼,總免不了編寫登陸部分。在獲取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;
    }
}
    昨天重讀hibernate的參考手冊,發現query介面提供了一個更好的方法用來獲取例項,當返回的例項明確只有一個或者為null的時候。
uniqueResult
public Object uniqueResult()throws HibernateException返回:單個例項或者null丟擲:當返回的例項大於一個的時候的丟擲NonUniqueResultException對應的使用方法如下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();}