`
tianhandigeng
  • 浏览: 369223 次
  • 性别: 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

 

分享到:
评论

相关推荐

    hibernate操作数据库笔记

    //该方法会立即加载/获取数据(只要调用该方法就会立即向数据库发出查询语句),该方法只在内部缓存查找数据,如果内部缓存中没有数据就直接去数据库查询,当数据库中没有要查询的数据时返回null (6).load(Class ...

    Hibernate 高级配置

    1)、uniqueResult()方法,返回一个单个对象 2)、list()方法返回一个集合 3)、参数绑定 4)、setParameter()方法,绑定任意类型的参数 5)、setProperties()方法,把命名参数与一个对象的属性值绑定 3. Hibernate...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     17.1.10 按主键逐个处理查询结果(iterate()方法)  17.1.11 可滚动的结果集  17.1.12 在HQL查询语句中绑定参数  17.1.13 设置查询附属事项  17.1.14 在映射文件中定义命名查询语句  17.1.15 在HQL查询语句中...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     17.1.10 按主键逐个处理查询结果(iterate()方法)  17.1.11 可滚动的结果集  17.1.12 在HQL查询语句中绑定参数  17.1.13 设置查询附属事项  17.1.14 在映射文件中定义命名查询语句  17.1.15 在HQL查询语句中...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     17.1.10 按主键逐个处理查询结果(iterate()方法)  17.1.11 可滚动的结果集  17.1.12 在HQL查询语句中绑定参数  17.1.13 设置查询附属事项  17.1.14 在映射文件中定义命名查询语句  17.1.15 在HQL查询语句中...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     17.1.10 按主键逐个处理查询结果(iterate()方法)  17.1.11 可滚动的结果集  17.1.12 在HQL查询语句中绑定参数  17.1.13 设置查询附属事项  17.1.14 在映射文件中定义命名查询语句  17.1.15 在HQL查询语句中...

    SQL查询构建工具Querydsl.zip

    Querydsl是一个Java开源框架用于构建类型安全的SQL查询语句。它采用API代替拼凑字符串来构造查询语句。可跟 Hibernate 和 JPA 等框架结合使用。 基本查询: JPAQuery query = new JPAQuery(entityManager); ...

    javaee三大框架整合宅急送项目lib包

    ============ 为了在下一个页面 可以显示流程图, 根据实例id 查询 发布id @Override public String findDeploymentIdByProcessInstanceId(String pid) { ProcessInstance processInstance = processEngine....

    D语言的ORM框架HibernateD.zip

    HibernateD 是 D 语言的 ORM 框架,类似 Java 的 Hibernate,示例代码:import hibernated.core; // Annotations of entity classes class User {  long id;  string name;  Customer customer;  @...

Global site tag (gtag.js) - Google Analytics