1、以前写代码,总免不了要编写登录部分。在获取user的时候,只可能返回一个user实例,或者为null。以前使用以下方法实现:
public User getString name,String password){
Session session=HibernateUtil.getSessionFactory).openSession);
String hql="from User u where u.name = ? and u.password=?" ;
List list=session.createQueryhql).setString0 , name).setString1,password).list);
if list.size)== 1 ){
return User)list.get 0 );
}else {
return null ;
}
}
2、hibernate的参考手册中,query接口提供了一个更好的方法 uniqueResult ) 用来获取实例,如果查询结果有多个值则抛出错误;结果有且只有一个值,返回一个object; 如果没值,返回null
public User getString name,String password){
Session session=HibernateUtil.getSessionFactory).openSession);
String hql="from User u where u.name = ? and u.password=?";
return User)session.createQueryhql).setString0,name).setString1,password).uniqueResult);
}
如果查询结果有多个值则抛出NonUniqueResultException的错误;
如果查询结果有且只有一个值,返回一个object;
如果没值,返回null