DetachedCriteria的使用

设计上能够灵活的依据 Criteria 的特点来方便地进行查询条件的组装。如今对 Hibernate的Criteria 的使用方法进行总结:
   Hibernate 设计了 CriteriaSpecification 作为 Criteria 的父接口。以下提供了 Criteria和DetachedCriteria 。

   Criteria 和 DetachedCriteria 的主要差别在于创建的形式不一样。 Criteria 是在线的,所
以它是由 Hibernate Session 进行创建的;而 DetachedCriteria 是离线的。创建时无需
Session,DetachedCriteria 提供了 2 个静态方法 forClass(Class) 或 forEntityName(Name)
进行DetachedCriteria 实例的创建。

Spring 的框架提供了getHibernateTemplate

().findByCriteria(detachedCriteria) 方法能够非常方便地依据DetachedCriteria 来返回查询结
果。
   Criteria 和 DetachedCriteria 均可使用 Criterion 和 Projection 设置查询条件。能够设
置 FetchMode( 联合查询抓取的模式 ) ,设置排序方式。

对于 Criteria 还能够设置 FlushModel

(冲刷 Session 的方式)和 LockMode (数据库锁模式)。

1:
DetachedCriteria beautyCriteria =DetachedCriteria.forClass(Beauty.class).createCriteria("customers");
beautyCriteria.add(Restrictions.eq("name", "Gates")):

2:
DetachedCriteria beautyCriteria =DetachedCriteria.forClass(Beauty.class).createAlias("customers","c");
beautyCriteria.add(Restrictions.eq("c.name", "Gates")):

接着有了新的要求,年纪太大的美女不要,还是查找拥有客户Gates的,条件例如以下:
DetachedCriteria beautyCriteria =DetachedCriteria.forClass(Beauty.class, "b").;
DetachedCriteria customerCriteria =beautyCriteria.createAlias("customers", c");
beautyCriteria.add(Restrictions.le("b.age", new Long(20))):
customerCriteria.add(Restrictions.eq("c.name", "Gates")):


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值