当前位置 > 首页 > Java

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

5/24/2011 6:28:00 AM来源:Java

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

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



  • 静坐听风教您配置JBoss 6 M3:如何配置JMS

    8/31/2010 12:11:00 PM

    1. 打开% jboss -6.0.0-M3%\server\default\deploy\ hornetq 目录,copy hornetq-configur

  • Spring MVC 入门

    3/21/2011 8:22:00 PM

    这篇文章将教你快速地上手使用? Spring 框架 . 如果你手上有一本《Spring in Action》, 那么你最好从第三部分Spring 在 Web 层的应用--建立 Web 层开始看, 否

  • XFire与Tomcat5.0.28问题

    9/24/2010 11:56:00 PM

    1、使用 XFire1.2.6 开发WebService 2、如果中间件使用 Tomcat 5.0.28 在访问 http://localhost:8080/web/BookServic

  • JDK环境变量与Tomcat7配置

    9/16/2011 12:03:00 PM

    JDK JAVA_HOME=X:\JDK_1.4.2 PATH=%JAVA_HOME%\bin;%PATH%? (%PATH% 指以前的其他路径 JAVA_HOME最好在前)

  • Hibernate3注解

    8/4/2011 3:34:00 PM

    1 、 @Entity(name=EntityName) 必须, name 为可选 , 对应数据库中一的个表 2 、 @Table(name=,catalog=,schema=)

  • 多版本tomcat共存问题

    2/24/2011 2:41:00 PM

    摘要: 启动 tomcat 6时,始终出现java.lang.NoSuchMethodError: javax.servlet.ServletContext.getContextPath()Lj

  • Hibernate3调用存储过程

    9/29/2010 4:28:00 PM

    一.建表与初始化数据 在mysql的test数据库中建立一张新表:tbl_user,建表语句如下: DROPTABLEIFEXISTS`user`; CREATETABLE`tbl_u

  • 王勇Hibernate自学笔记

    12/12/2010 8:57:00 PM

    零、 由于原来看的那个主要是用的Annotation,而这个主要是用的xml,因为两个都要学,所以xml的就自己写了,Annotation的那个笔记太大,在网上找的,就不搬到这上面来了。

  • jbpm4.4安装(tomcat-mysql)

    10/29/2010 7:55:00 PM

    转自http://blog.sina.com.cn/s/blog_4863d28a0100ky8r.html 1.JBPM4.4下载(http://sourceforge.net/project

  • struts2 通过配置struts.xml看action之间如何传递参数

    11/11/2010 4:55:00 PM

    需求功能是这样:Action1 获取数据库配置内容,得到相应Model的 动态URL ,这里的URL 有的是Action有的是JSP页面。 1.使用result 类型中的 redirect