注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

无线时代辐射无穷

抓紧生宝宝,小心辐射

 
 
 

日志

 
 

在Hibernate中Query的uniqueResult查询和Result查询有什么区别  

2011-05-13 18:37:29|  分类: hibernate |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

baidu找了一下,看到有人贴了这么一些:

以前写代码,总免不了编写登陆部分。在获取user的时候,只可能返回一个user实例,或者为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;   

     }   

}  

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代码
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();  

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

备注:感觉不是很实用呀,当查询条件不太确定是否只有一条记录时,这时候就出麻烦了。
 

  评论这张
 
阅读(1944)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017