Hibernate之条件查询(Criteria Queries)

1、创建一个Criteria 实例

org.hibernate.Criteria接口表示特定持久类的一个查询。SessionCriteria实例的工厂。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值