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")):

版权声明:本文为博主原创文章,未经博主允许不得转载。

把艰辛的劳作看作是生命的必然,

DetachedCriteria的使用

相关文章:

你感兴趣的文章:

标签云: