`
javandroid
  • 浏览: 25598 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

Hibernate中离线查询DetachedCriteria案例

 
阅读更多
Hibernate中离线查询经常用到。
问题:但当查询条件并不仅仅涉及到一个实体,而是还含有关联的实体中的属性时,就不知道怎么弄了。自己摸索了好久才发现原来API中已经提供了相应的解决方法。

情况1:
涉及到一个实体

查询条件涉及到的是Goods,如果查询时查询的是Goods表,那简单了
Service层
public List<History> findByCondition(Goods goods) {
	DetachedCriteria dc=DetachedCriteria.forClass(History.class);
	if(goods().getNm()!=null){
		dc.add(Restrictions.like("nm", "%"+goods().getNm()+"%"));
	}
	……
	return goodsDao.findByDetached(dc);
}

情况2:
但实际情况是:这是查询出入库操作历史的查询页面,所以Action中使用模型驱动时的Model是History而非Store了,尽管这些参数最终还是封装到了History关联的Goods中。自然的传到Service层时的参数就不是上面代码中的Goods了,而是History了。这是就要用到”取别名“方式了。
public List<History> findByCondition(History history) {
	DetachedCriteria dc=DetachedCriteria.forClass(History.class,"h");//别名:History对应h
	dc.createAlias("h.goods", "g");//别名:Goods对应g
	dc.createAlias("h.goods.store","s");//别名:Store对应s
	if(history.getGoods().getNm()!=null){
		dc.add(Restrictions.like("g.nm", "%"+history.getGoods().getNm()+"%"));
	}
	if(history.getGoods().getName()!=null){
		dc.add(Restrictions.like("g.name", "%"+history.getGoods().getName()+"%"));
	}
	if(history.getGoods().getStore()!=null){
		dc.add(Restrictions.like("s.id", "%"+history.getGoods().getStore().getId()+"%"));
	}
	return historyDao.findByDetached(dc);
}

分享到:
评论

相关推荐

    Hibernate - DetachedCriteria 的完整用法

    使用 Criteria 进行查询,主要要清晰的是 Hibernate 提供了那些类和方法来满足开发中查询条件的创建和组装。如使用 `session.createCriteria(Class)` 方法来创建 Criteria 实例,然后使用 `add(Criterion criterion)...

    Hibernate 使用DetachedCriteria操作

    本篇将深入探讨Hibernate中的DetachedCriteria操作,帮助你更好地理解和运用这一功能。 **1. Hibernate 概述** Hibernate 是一个开源的对象关系映射(ORM)框架,它提供了数据访问和事务处理的解决方案,通过将业务...

    hibernate中的查询方式

    ### Hibernate中的查询方式详解 #### 一、HQL查询(Hibernate Query Language) HQL是Hibernate提供的面向对象的查询语言,其语法与SQL相似但并非完全相同。HQL的一个显著优势在于它具有很好的跨数据库能力,这...

    Hibernate(24): 为什么用DetachedCriteria不能表连接地取数据?

    如果要在DetachedCriteria中查询这两个实体的关联数据,可以先分别构建DetachedCriteria,然后在执行时合并它们,但这实际上并不是真正的JOIN操作,而是通过两个独立的查询来模拟JOIN的效果。 例如,你可以这样操作...

    hibernate的多态查询

    5. **多态查询的实现**:Hibernate支持使用`DetachedCriteria`或`Criteria` API来进行多态查询,通过`createCriteria()`方法指定父类,并使用`add(Restrictions.in("property", values))`等方法来限制查询条件。...

    DetachedCriteria查询

    DetachedCriteria 是 Hibernate 中的一种离线查询对象,它可以在不依赖 Session 的情况下生成动态 SQL 语句并进行查询。下面是 DetachedCriteria 查询的详细知识点: 创建 DetachedCriteria 对象 DetachedCriteria...

    Hibernate_query查询数据表中的一个字段.

    在Hibernate中,每一个数据库表都对应一个Java类,称为实体类。我们需要在实体类中定义属性,这些属性与数据库表的字段相对应。例如,如果我们要查询一个名为`users`表中的`username`字段,我们可能有一个User实体类...

    hibernate里面的 两种查询

    在Java的持久化框架Hibernate中,查询是连接应用程序与数据库的关键环节。Hibernate提供了两种主要的查询方式:离线查询(Criteria API)和HQL(Hibernate Query Language)语句查询。这两种查询方法各有特点,适用...

    Hibernate的MySql查询.rar

    另外,Hibernate的 Criteria API 还可以配合DetachedCriteria使用,实现延迟加载(Lazy Loading),这对于处理大数据量时的性能优化至关重要。延迟加载允许我们在需要时才加载关联的对象,避免一次性加载大量数据...

    Hibernate QBC高级查询.rar

    2. **DetachedCriteria**:这是一个离线查询对象,可以在不与Session交互的情况下构建查询条件,然后在需要的时候再与Session结合执行,这对于延迟加载和构建复杂的查询非常有用。 3. **Criteria查询的构建**:包括...

    Hibernate中Criteria的完整用法

    使用 Criteria 进行查询,主要要清晰的是 Hibernate 提供了那些类和方法来满足开发中查询条件的创建和组装。通过 Criteria,可以根据实际情况灵活地组装查询条件,以满足复杂的查询需求。 Hibernate 的 Criteria 是...

    Hibernate_query查询数据表中部分字段.

    本文将深入探讨如何使用Hibernate进行数据表中的部分字段查询,这在实际开发中是非常常见的需求。 首先,理解Hibernate的核心概念:实体(Entity)、持久化类(Persistent Class)和映射文件(Mapping File)。实体...

    hibernate查询方法

    在这个例子中,我们从`User`实体中查询用户名为"testUser"的所有用户。 ### 二、Criteria查询 Criteria API是Hibernate提供的另一种查询方式,它允许开发者通过构建对象化的查询条件来执行数据库查询。下面是如何...

    HQL是hibernate自己的一套查询

    在上面的示例中,我们首先通过`HibernateUtil.getSession()`方法获取到一个`Session`实例,然后定义了一个HQL查询语句,该语句用于从`Admin`表中查询`aname`为`name`的所有记录。最后通过`createQuery`方法创建查询...

    hibernate查询详解

    本文将详细介绍Hibernate的五种查询方式,包括HQL查询、Criteria方法、动态查询DetachedCriteria、例子查询、SQL查询以及命名查询,以满足不同场景下的需求。 1. HQL查询: Hibernate Query Language(HQL)是一种...

    springMVC+hibernate的条件查询加分页的demo

    在Hibernate中,我们可以使用Criteria的setFirstResult和setMaxResults方法来实现分页。setFirstResult指定从哪一条记录开始获取,setMaxResults指定要获取多少条记录。这样,每次查询只返回一部分数据,从而实现...

    hibernate中文参考文档pdf

    7. **Criteria API的DetachedCriteria**:允许在不与数据库交互的情况下构造查询,之后再进行执行,有助于实现更高效的查询策略。 8. ** Criteria API的Projections**:用于获取聚合结果,如计数、求和、平均值等。...

    Hibernate中Criteria的使用

    使用 Criteria 进行查询,主要要清晰的是 Hibernate 提供了那些类和方法来满足开发中查询条件的创建和组装。Criteria 和 DetachedCriteria 都可以使用Criterion 和 Projection 设置查询条件,可以设置 FetchMode...

    Hibernate查询方式代码示例

    **Hibernate查询方式详解** 在Java世界中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。...在博客中,我详细讲解了每个查询方法的使用和注意事项,还有更多的实战案例等待你去探索。

    Hibernate中查询的法方

    在本文中,我们将深入探讨Hibernate中的一些基本查询方法,这对于初学者掌握Hibernate进行数据操作非常有帮助。 1. **保存(Save)** Hibernate提供了`save()`方法来保存一个持久化对象到数据库。例如,如果有一个...

Global site tag (gtag.js) - Google Analytics