`

hibernate高级查询

阅读更多
大家知道,在Hibernate Framework中,提供了三种查询数据的方式:
1.Hibernate Query Language (HQL):
   它是ANSI SQL的最小OO Dialect,
   例:
   session.createQuery("from Category c where c.name like 'Laptop%'");
                     entityManager.createQuery("select c from Category c where c.name like 'Laptop%'");
2.Criteria query :
    它是HQL查询的延伸,提供了一些高级查询功能
例:
session.createCriteria(Category.class)
                .add( Restrictions.like("name", "Laptop%") );
3.Native SQL query :
session.createSQLQuery(
"select {c.*} from CATEGORY {c} where NAME like 'Laptop%'"
).addEntity("c", Category.class);

最近,我在项目中经常遇到Hibernate数据查询的任务,我对一些我遇到的较难的课题举例进行说明:

《表述SELECT》
Criteria crit = session.createCriteria(User.class)
.setProjection( Projections.projectionList()
.add( Projections.property("lastname"))
.add( Projections.property("firstname"))
.list();

《表述WHERE》
Criteria crit = session.createCriteria(User.class)
.add(Restrictions.eq("email", "foo@hibernate.org"))
.uniqueResult();

《表述GROUP》
Criteria crit = session.createCriteria(User.class)
.setProjection( Projections.projectionList()
.add( Projections.groupProperty("lastname"))
.add( Projections.groupProperty("firstname"))
.list()

《表述ORDER》
Criteria crit = session.createCriteria(User.class)
.addOrder( Order.asc("lastname") )
.addOrder( Order.asc("firstname") )
.list();

《取TOP 5结果》:
Criteria crit = session.createCriteria(Cat.class);
.setMaxResults(5)
.list();

《分页》:
Criteria crit = session.createCriteria(Cat.class)
.setFirstResult(1)
.setMaxResults(50)
.list();

《取查询结果》:
如果使用select或group,必须使用object[]来获得查询结果List值;
如果未使用select或group,必须使用java object[]来获得查询结果List值;

《涉及组合primary key属性》:
Criteria crit = session.createCriteria(activitylog.class)
.add( Restricts.eq(“comp_id.custId”,customerid0) )
.add( Restricts.ge(“createdTs”, starttime) )
.add( Restricts.le(“createdTs”, endtime ) )
.list();

《Foreign Key联合查询》:
Criteria crit = session.createCriteria(activitylog.class)
.createAlias( “taskCodeRf”, “tc” )
.setProjection( Projections.projectionList()
.add( Projections.property("UserId"))
.add( Projections.property("tc.taskdescription"))
.list();

《Native Query》:
SQLQuery query = session.createSQLQuery(“select  activitylog_seq.nextval as sessid from dual”);
Query.addScalar(“sessid”,Hibernate.LONG);
Long long0 = query.uniqueResult();

分享到:
评论

相关推荐

    Hibernate的高级查询

    当我们需要进行更复杂的数据库查询时,Hibernate提供了丰富的高级查询功能,这正是“Hibernate的高级查询”这一主题的核心所在。 在Hibernate中,高级查询主要包括HQL(Hibernate Query Language)、Criteria API和...

    Hibernate QBC高级查询.rar

    本资源“Hibernate QBC高级查询”聚焦于Hibernate Query by Criteria(QBC)的高级用法,旨在帮助开发者深入理解并熟练运用这一强大的查询机制。 Query by Criteria是Hibernate提供的另一种查询方式,与HQL...

    Hibernate

    Hibernate高级查询 介绍了hibernate的各种查询方法,以及HQL的使用

    Hibernate高级教程

    《Hibernate高级教程》是一份深度探索Java对象关系映射(ORM)框架Hibernate的教程,它包含14个精心设计的章节,旨在帮助开发者深入理解并掌握Hibernate的核心特性和高级用法。以下是对这些章节可能涉及的主要知识点...

    通用的hibernate查询

    除了基础的查询,Hibernate还支持连接查询、子查询、聚合函数等高级功能。例如,如果你需要根据用户的年龄进行分组并计算每个年龄段的用户数量,可以这样写: ```java String hql = "select age, count(*) from ...

    Hibernate的高级操作[归纳].pdf

    除了状态转换,数据缓存也是Hibernate高级特性的一部分。Hibernate提供了First-Level Cache(一级缓存)和Second-Level Cache(二级缓存)来优化性能。一级缓存是每个Session的私有缓存,存储了Session内的实体对象...

    hibernate中的查询方式

    尽管Hibernate提供了一系列高级查询机制,但在某些情况下直接使用SQL查询仍然非常有用。 **特点:** - **直接性强:** 直接使用SQL查询,能够利用数据库本身的优化能力。 - **易理解:** 对于大多数开发者来说,...

    Hibernate高级映射实例

    本实例主要探讨的是Hibernate的高级映射技术,包括单向一对一、单向多对一、单向一对多以及单向多对多这四种关系映射。 首先,我们来理解一下什么是映射。在Hibernate中,映射是将对象模型与关系数据库之间的桥梁,...

    JAVA高级教程(Hibernate高级+Javascript高级+CSS滤镜+插件编程)

    Hibernate高级 1.Hibernate中文手册 2.Hibernate课件 Javascript高级 1.JS验证大全(很全) 2.Javascript高级教程 3.Javascript参考手册 CSS滤镜 1.精通CSS--滤镜 JSP高级编程 1.jsp高级编程 插件编程 1....

    Hibernate 多表连接分页查询示范项目

    总结,"Hibernate 多表连接分页查询示范项目"是一个实用的示例,它展示了如何在实际应用中利用 Hibernate Criteria API 实现复杂查询和分页,对于学习和掌握 Hibernate 的高级特性和数据库操作技巧非常有帮助。...

    Hibernate查询解决方案

    高级查询技巧 - **使用自定义参数类**:可以使用自定义的参数类来传递查询参数,例如上面提到的 `Paras` 类。 ```java public class Paras { private Object pName; private int typeNo; public Object ...

    基于Jsp的在线考试系统毕业设计论文

    使用ssh必然用到了hql查询,虽然学习过hibernate高级查询,而用hibernate联合4,5张表进行查询时就不知道该用hibernate的那种方式进行查询了,一开始觉得hibernate远没有jdbc直接连数据库简单,后来随着使用hql...

    hiber开发指南 hibernate高级特性

    **hibernate 开发指南:深入理解高级特性** 在Java世界中,Hibernate作为一个强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本文将深入探讨Hibernate的高级特性,帮助开发者更好地理解和应用这一工具,...

    struts2.1+spring3.0+hibernate3.3整合小例子

    - 学习更多关于Struts2拦截器、Spring注解以及Hibernate高级查询技术等,以提升项目性能和可维护性。 - 探索不同数据库(如MySQL、SQL Server)的配置差异,增强自己的适应能力。 通过上述步骤和建议,开发者能够更...

    hibernate查询方法

    QueryOver是NHibernate(.NET版Hibernate)引入的一个高级查询API,但也可以在Java Hibernate中使用,它提供了更丰富的查询语法。虽然在Java中使用QueryOver不如使用Criteria API常见,但在某些场景下,QueryOver能...

    数据分页以及高级查询

    在Java中,我们可以使用JPA(Java Persistence API)或Hibernate等ORM框架来实现高级查询。例如,JPA提供了 Criteria API 和 Querydsl 等工具,它们可以用来创建动态、类型安全的查询,避免了SQL注入的风险。...

    Hibernate高级操作

    **Hibernate高级操作** 在Java开发领域,Hibernate是一个广泛使用的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式处理数据。深入理解Hibernate的高级操作对于提升开发效率和代码...

    Hibernate查询映射试验

    此外,项目可能还会涉及二级缓存的使用,以及如何在查询中进行分页、排序、聚合函数的应用等高级特性。学习并实践这些内容,不仅可以加深对Hibernate的理解,还能提高代码的可读性和维护性。 总之,通过“Hibernate...

    Hibernate的高级操作

    综上所述,Hibernate的高级操作涵盖了各种查询方式、关联管理、事务处理、缓存机制等多个方面,熟练掌握这些技巧将极大地提升开发效率和应用性能。通过深入学习《精通Hibernate》和《Hibernate的高级操作》等资料,...

Global site tag (gtag.js) - Google Analytics