`

HQL and criteria select

F# 
阅读更多

    @Override
    public FriendBean findFriendBean(final FriendBean friendBean) {
//        return (FriendBean) this.getHibernateTemplate().execute(
//                new HibernateCallback() {
//                    public Object doInHibernate(Session session)
//                            throws HibernateException, SQLException {
//                        Query query = session
//                                .createQuery("FROM FriendBean f WHERE f.id.userid=? AND f.id.friendid=? AND f.id.groupid=?")
//                                .setParameter(0, friendBean.getId().getUserid())
//                                .setParameter(1, friendBean.getId().getFriendid())
//                                .setParameter(2, friendBean.getId().getGroupid());
//                        return query.uniqueResult();
//                    }
//                });
       
        return (FriendBean) this.getHibernateTemplate().execute(new HibernateCallback() {
            public Object doInHibernate(Session session) throws HibernateException, SQLException {
                Criteria criteria = session.createCriteria(FriendBean.class);
                // criteria.setProjection(Projections.count("userId"));
                if(null!= friendBean){
                    if(null!=friendBean.getId().getUserid()){
                        criteria.add(Restrictions.eq("id.userid", friendBean.getId().getUserid()));
                    }
                    if(null!=friendBean.getId().getFriendid()){
                        criteria.add(Restrictions.eq("id.friendid", friendBean.getId().getFriendid()));
                    }
                    if(null!=friendBean.getId().getGroupid()){
                        criteria.add(Restrictions.eq("id.groupid", friendBean.getId().getGroupid()));
                    }
                }
                Object result = criteria.uniqueResult();
                //criteria.setProjection(null);
                return result;
            }
        });
       
    }

分享到:
评论

相关推荐

    Hibernate中的查询:HQL、Criteria、原生SQl

    本篇文章将深入探讨Hibernate中的三种主要查询方式:HQL(Hibernate Query Language)、Criteria API以及原生SQL。 一、HQL(Hibernate Query Language) HQL是Hibernate提供的一种面向对象的查询语言,它类似于SQL...

    Hibernate之HQL查询

    **正文** ...在实际项目中,结合HQL和 Criteria 查询,以及Querydsl等工具,可以构建更加灵活和健壮的数据访问层。在进行HQL编程时,应注意避免SQL注入风险,合理使用命名参数,以确保代码的安全性。

    Hql详解[文].pdf

    - Hql支持常用的聚集函数,如`sum()`、`avg()`、`max()`、`min()`、`count()`,例如`String hql = "Select count(*) FROM User as user";`返回用户总数。 - 需要注意的是,`count()`返回的是`Long`类型,而其他...

    Hibernate 查询经典练习题

    String hql = "SELECT d.ename FROM Emp d WHERE d.hiredate BETWEEN :startDate AND :endDate"; List<String> names = session.createQuery(hql) .setParameter("startDate", "1981-01-01") .setParameter(...

    Hibernate-HQL.rar_HQL_hibernate hql

    3. 动态HQL:通过Criteria API或Query接口,可以构建动态的HQL查询,无需预先知道完整的查询语句。 4. 分页查询:使用setFirstResult和setMaxResults方法实现分页,如“query.setFirstResult(0).setMaxResults(10)...

    精通HQL.doc

    9. **动态HQL**:在实际应用中,可能需要根据用户输入动态构建HQL,可以使用Criteria API或Querydsl等工具来实现。 10. **更新和删除**:HQL不仅用于查询,还可以用于更新和删除操作。例如,`update Student set ...

    精通hibernate HQL语言

    String hql = "select s.sdept, count(s) from Student s group by s.sdept order by s.sdept"; List[]> departmentCounts = session.createQuery(hql).list(); ``` 这里,`group by`语句用于按系别分组,`count(s)...

    hibernate_hql.rar_HQL

    Hibernate提供`Criteria API`和`Querydsl`等工具,可以根据参数动态生成HQL,提高了代码的可维护性。 总之,Hibernate HQL是Java开发者处理数据库查询的强大工具,它以其面向对象的特性,降低了数据库操作的复杂度...

    HQL的具体内容和使用

    HQL遵循与SQL类似的语法结构,支持`select`、`where`、`in`、`like`、`between and`、`order by`、`group by`和`having`等语句块,同时提供`max`、`min`和`sum`等聚合函数。它对底层数据库透明,这意味着你可以在...

    hibernate3.2 (十)HQL查询

    2. 子查询:可以在HQL中嵌套查询,例如`select u from User u where u.id in (select a.userId from Address a where a.city='上海')`,找出所有有上海地址的用户。 3. 排序:使用`order by`子句可以对查询结果进行...

    hql语句查询

    **HQL语句查询详解** Hibernate Query Language (HQL) 是Hibernate框架中用于查询数据库的面向对象的语言。...在实际项目中,HQL和Criteria API都是常见的查询方式,根据项目需求和团队习惯可以选择合适的方法。

    Hibernate中Criteria的完整用法

    String hql = "select s.name ,avg(s.age) from Student s group by s.name"; Query query = session.createQuery(hql); List[]> list = query.list(); ``` 这个HQL语句会返回每个学生名字及其平均年龄的列表。...

    HQL是hibernate自己的一套查询

    除了HQL之外,Hibernate还提供了Criteria API来进行查询。Criteria API是一种类型安全的API,可以提供更灵活的查询方式。 ```java Session session = HibernateUtil.getSession(); Criteria criteria = session....

    HQL简易介绍(DOC文档)

    HQL作为Hibernate的核心组成部分,不仅提供了与Criteria查询类似的面向对象封装,还具有更丰富的查询特性,使得复杂的查询操作变得简单易懂。 【HQL基本结构】 HQL查询语句主要包括以下几个部分: 1. `SELECT`:...

    hibernate3.2.5

    hql = hql.replaceFirst("SELECT", "UPDATE"); Query updateQuery = session.createQuery(hql); int updatedEntities = updateQuery.executeUpdate(); ``` 四、Hibernate 3.2.5版的改进 Hibernate 3.2.5是一个稳定...

    Hibernate中Criteria的用法

    String hql = "select s.name ,avg(s.age) from Student s group by s.name"; Query query = session.createQuery(hql); list = query.list(); ``` 在上面的代码中,我们首先创建了一个 HQL 查询字符串,然后使用 `...

    Hibernate注解方式、HQL查询

    hql = "select age, count(*) from User group by age having count(*) > 10"; List[]> result = session.createQuery(hql).list(); ``` 5. **关联查询**:HQL可以轻松处理关联查询,通过`JOIN`关键字联合多个表。...

    Hibernate hql查询

    总的来说,Hibernate的HQL和Criteria查询提供了强大的数据操作能力,它们让开发者能够专注于业务逻辑,而不是底层的SQL细节,极大地提升了开发效率和代码质量。结合本地查询和性能优化策略,可以在Java应用中实现...

    hql基础语句

    HQL支持类似于SQL的查询结构,如SELECT、FROM、WHERE、GROUP BY、ORDER BY等。以下是一些基本示例: - ** 查询所有实体 **:`from EntityName` - ** 基于条件查询 **:`from EntityName where property = value` - ...

    经典hibernate教程-HQL语句

    HQL的全称是?...HQL语句为:select jd.jdid,jd.jd from TblJd jd。怎样获得并显示查询结果? 使用'?'做占位符的参数查询,怎样设置参数的值? 命名参数查询的语法是? 怎样创建Criteria查询对象?

Global site tag (gtag.js) - Google Analytics