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();}