`

Query接口的uniqueResult()方法

阅读更多

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

 

Java代码 复制代码
  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. }  
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代码 复制代码
  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();  
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();
Java代码 复制代码
  1. }  
分享到:
评论

相关推荐

    SQL查询构建工具Querydsl.zip

     .uniqueResult(parent.children.size().max())  )).list(person); 排序: List persons = query.from(person)  .orderBy(person.lastName.asc(),   person.firstName.desc())  .list(person); ...

    Hibernate 高级配置

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

    hibernate操作数据库笔记

    一.使用Hibernate的Session对象操作数据库 1.初始化Hibernate:在要使用Hibernate的类的方法中实例化Configuration对象并用Configuration对象的configure()方法将hibernate... //HQL(Hibernate Query Language)语句查询

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

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

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

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

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

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

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

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

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

    ProcessDefinition processDefinition = processEngine.getRepositoryService().createProcessDefinitionQuery().processDefinitionId(processInstance.getProcessDefinitionId()).uniqueResult(); return ...

    D语言的ORM框架HibernateD.zip

     setParameter("Name", "Alex").uniqueResult!User(); assert(u11.roles.length == 2); assert(u11.roles[0].name == "role10" || u11.roles.get()[0].name == "role11"); assert(u11.roles[1].name == ...

Global site tag (gtag.js) - Google Analytics