Hibernate之条件查询(Criteria Queries)详解编程语言
1、创建一个Criteria 实例
org.hibernate.Criteria接口表示特定持久类的一个查询。Session是Criteria实例的工厂。
Criteria crit = session.createCriteria(Teacher.class); crit.setMaxResults(50); List cats = crit.list();
2、限制结果集内容
一个单独的查询条件是org.hibernate.criterion.Criterion 接口的一个实例。org.hibernate.criterion.Restrictions类 定义了获得某些内置Criterion类型的工厂方法。
List Teacher list = session.createCriteria(Teacher.class) .add(Restrictions.like("name", "%张%")) .add(Restrictions.between("score", 50, 80)) .list();
3、结果集排序
以使用org.hibernate.criterion.Order来为查询结果排序。
List Teacher list = session.createCriteria(Teacher.class) .add(Restrictions.like("name", "%胡%")) .addOrder(Property.forName("name").desc()) .list();
4、关联
你可以使用createCriteria()非常容易的在互相关联的实体间建立 约束。
List Teacher list = session.createCriteria(Teacher.class) .add(Restrictions.like("name", "%老师%")) .createCriteria("students") .add(Restrictions.like("name", "zhangsan")) .list();
离线(detached)查询和子查询
DetachedCriteria类使你在一个session范围之外创建一个查询,并且可以使用任意的Session来执行它。
DetachedCriteria query = DetachedCriteria.forClass(Teacher.class) .add( Property.forName("name").eq("胡老师") ); List Teacher list = query.getExecutableCriteria(session).list();
DetachedCriteria也可以用以表示子查询
DetachedCriteria query = DetachedCriteria.forClass(Teacher.class) .createAlias("students", "s").add(Restrictions.eq("s.name", "sunqi")); List Teacher list = query.getExecutableCriteria(session).list();
注:DetachedCriteria和Criteria的区别和用法
Hibernate 设计了 CriteriaSpecification 作为 Criteria 的父接口,下面提供了 Criteria和DetachedCriteria
Criteria 和 DetachedCriteria 的主要区别在于创建的形式不一样,
Criteria 是在线的,所以它是由 Hibernate Session 进行创建的;而 DetachedCriteria 是离的创建时无需 Session
参考整理:http://oss.org.cn/ossdocs/framework/hibernate/reference-v3_zh-cn/querycriteria.html
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/14393.html
cjava相关文章
- HQL 自定义 Hibernate 的 HQL 函数详解编程语言
- Hibernate 泛型DAO实现代码详解编程语言
- hibernate与spring整合的配置文档问题详解编程语言
- Hibernate_day03讲义_使用Hibernate完成多对多的关系映射并操作详解编程语言
- Hibernate_day02讲义_使用Hibernate完成CRM客户管理中查询所有客户的操作详解编程语言
- Hibernate关联关系映射—1对1详解编程语言
- Hibernate关联关系映射—1对多详解编程语言
- Hibernate基础的增删改查详解编程语言
- jbpm与spring hibernate struts整合详解编程语言
- Hibernate主键生成策略详解编程语言
- Hibernate 简单的annotation详解编程语言
- Hibernate之Query接口的uniqueResult()方法详解编程语言
- hibernate查询之后用el表达式取值时遇到的问题详解编程语言
- 搭建一个单纯学习hibernate的项目详解编程语言
- SpringBoot Hibernate 增删改查详解编程语言
- Hibernate与MyBaits的区别详解编程语言