`
tianhandigeng
  • 浏览: 374357 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Hibernate的Query接口的uniqueResult()方法(如果查询结果有多个值则抛出错误;结果有且只有一个值,返回一个object; 如果没值,返回

 
阅读更多

以前写代码,总免不了编写登陆部分。在获取user的时候,只可能返回一个user实例,或者为null。以前使用以下方法实现。

  1. public  User get(String id){   
  2.     Session session=HibernateUtil.getSessionFactory().openSession();   
  3.     String hql="from User u where u.id = ?" ;   
  4.     List list=session.createQuery(hql).setString(0 , id).list();   
  5.     if  (list.size()== 1 ){   
  6.         return  (User)list.get( 0 );   
  7.     }else {   
  8.         return   null ;   
  9.     }   
  10. }   

 昨天重读hibernate的参考手册,发现query接口提供了一个更好的方法用来获取实例,当返回的实例明确只有一个或者为null的时候。
uniqueResult
public Object uniqueResult()throws HibernateException返回:单个实例或者null抛出:当返回的实例大于一个的时候的抛出NonUniqueResultException对应的使用方法如下:

  1. public  User get(String id){   
  2. Session session=HibernateUtil.getSessionFactory().openSession();      
  3. String hql="from User u where u.id=?" ;      
  4. return  (User)session.createQuery(hql).setString( 0 , id).uniqueResult();  
  5.   
  6. }   

如果查询结果有多个值则抛出错误;
如果查询结果有且只有一个值,返回一个object;
如果没值,返回null

 

分享到:
评论

相关推荐

    06_传智播客hibernate教程_完善HibernateUtil类及hql查询入门

    这里的 `setParameter()` 方法用于设置参数,`uniqueResult()` 方法用于获取唯一的查询结果。 总结来说,`HibernateUtil` 类的完善意味着优化数据库操作的便捷性,而 HQL 查询则提供了灵活且强大的对象查询能力。...

    Hibernate方法的实现

    例如,使用Session的createCriteria()或createQuery()方法,然后添加查询条件,最后调用list()或uniqueResult()获取结果。 6. **缓存机制** Hibernate支持一级缓存(Session级别的)和二级缓存(SessionFactory...

    hibernate全面总结文档

    - `uniqueResult()` 返回查询结果的唯一对象,如果结果集为空或有多个结果,会抛出异常。 - `iterator()` 只检索对象的 ID 字段,用于遍历结果集。`load()` 方法则用于按需加载对象,减少内存消耗。 8. **缓存...

    hibernate中的几个重要方法以及调用[参照].pdf

    - Query对象是HQL查询的核心,通过调用Session的createQuery()方法创建Query实例,并通过setXXX()方法设置参数,最后执行list()、uniqueResult()等方法获取查询结果。 - HQL查询步骤包括获取Session、编写HQL、...

    hibernate核心知识

    `load()`返回一个代理对象,如果数据不存在会抛出异常。`load()`默认支持懒加载,而`get()`在找不到数据时会立即执行SQL查询。 **HQL(Hibernate Query Language)** HQL是Hibernate提供的面向对象的查询语言,与...

    hibernate笔记

    - `uniqueResult()`方法:执行查询并返回唯一结果,如果没有结果返回null,如果有多个结果则抛出异常。 通过以上介绍可以看出,Hibernate不仅提供了强大的配置和映射机制,还提供了丰富的API支持,使得开发人员...

    hibernate 入门经典实例

    - 构建一个带参数的查询,使用`setParameter`方法设置参数值,然后执行查询。 #### 实验十三:Query-namedQuery **实验目的:** - 理解并使用`namedQuery`功能。 **实验步骤:** - 定义一个命名查询并在`...

    hibernate黑马全视频重点记录

    `List()`返回查询结果列表,`uniqueResult()`返回唯一结果,如果结果不唯一会抛出异常。 7. **映射文件`: `.hbm.xml`文件是Hibernate对象和数据库表之间的映射描述。它定义了类名、表名、主键生成策略等。例如,`...

    Hibernate HQL详解.docx

    Hibernate HQL,全称为Hibernate Query Language,是Hibernate框架中用于操作数据库的一种面向对象的查询语言。它允许开发者用面向对象的方式来编写查询语句,极大地提高了开发效率和代码的可读性。以下是对HQL的...

    HQL实用技术

    但需要注意的是,如果查询结果不唯一,则不能使用此方法,否则会抛出异常。 #### 六、分页查询 为了提高性能并减少数据传输量,分页查询是一种常用的优化手段。HQL提供了 `setFirstResult()` 和 `setMaxResult()` ...

    Hibernate 查询方式总结

    - 如果找不到匹配的记录,可能会抛出`org.hibernate.ObjectNotFoundException`异常。 - 只有当真正访问对象的属性时,才触发数据库查询。如果配置了代理模式,那么`load()`会返回一个代理对象,而不是立即加载实体...

    hql 的使用

    6. **执行查询**:执行 HQL 查询通常使用 `query.list()` 获取结果列表,如果确定结果只有一条,可以使用 `query.uniqueResult()` 获取单个对象,否则可能会抛出异常。 7. **查询语句**:HQL 包括多种查询方式: -...

    hibernate 常用方法介绍

    与`load`方法不同的是,`get`在找不到对象时返回null,而`load`会抛出`ObjectNotFoundEcception`异常,因此`get`在效率上稍有优势。 5. `save(Object entity)`:保存一个新的实例到数据库。在执行前,通常会使用`...

    在飞实习学J2EE之路:12.9.23 Hibernate的基本流程(登录)

    使用`Session`的`load()`或`get()`方法可获取特定用户,但为了性能考虑,通常使用HQL(Hibernate Query Language)或Criteria API进行查询。例如: ```java Session session = sessionFactory.openSession(); ...

    浅谈hibernate急迫加载问题(多重外键关联)

    当我们在前端尝试直接查询 `strategy` 表时,如果HQL(Hibernate Query Language)简单地写成 `From Strategy where id=:id`,那么由于默认的懒加载,当试图获取关联对象属性时,由于Session已经关闭,就会抛出“no ...

Global site tag (gtag.js) - Google Analytics