以前寫代碼,總免不了編寫登陸部分。在獲取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();
}
文章列表