`

关于条件查询detachedCriteria的一点体会

阅读更多
假设要通过stuName查询一个学生Student记录,可以如下:
420){this.resized=true;this.style.width=420;}" align=top> DetachedCriteria dc = DetachedCriteria.forClass(Student.class);
    dc.add(Restrictions.like("stuName", stuName, MatchMode.ANYWHERE));
      

 如果要通过Student的Team的teamName查询一个Student记录,很多人都会这么写:
420){this.resized=true;this.style.width=420;}" align=top> DetachedCriteria dc = DetachedCriteria.forClass(Student.class);
    dc.add(Restrictions.like("team.teamName", teamName, MatchMode.ANYWHERE));
      

遗憾的是上述程序报错,说是在Student中找不到team.teamName属性,这是可以理解的。那么如何通过teamName查找Student呢?
可以这么写:
420){this.resized=true;this.style.width=420;}" align=top> DetachedCriteria dc = DetachedCriteria.forClass(Student.class);
    dc.createAlias("team", "t");
    dc.add(Restrictions.like("t.teamName", teamName, MatchMode.ANYWHERE));
      
没错,就是要先建立team的引用,才能用team导航到teamName。

这里有一个特殊情况,如果是对引用对象的id查询,则可以不用建立引用,也就是可以不调用createAlias()语句,如下所示:
420){this.resized=true;this.style.width=420;}" align=top> DetachedCriteria dc = DetachedCriteria.forClass(Student.class);
    dc.add(Restrictions.like("team.id", teamId, MatchMode.ANYWHERE));
      
据我个人的经验,team后只能跟其主键属性,比较其他属性要用别名。此主键属性可以用“id”字符来指代,也可以用team的主键属性来指代。换句话说,我的Student类的类主键“stuId”,不管是在HQL还是在QBC中,都可以用stu.id来指代stu.stuId。在这里可以看出“id”字符的特殊性。上述是个人观点,并未得到确实的证实。
 
来源:http://www.blogjava.net/caixuetao/articles/60631.html
分享到:
评论

相关推荐

    DetachedCriteria查询

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

    Hibernate 使用DetachedCriteria操作

    在DetachedCriteria中定义的查询条件可以在稍后的时间点附加到Session上执行,这使得查询可以脱离当前的Session状态,因此得名“Detached”。这种特性在处理复杂的、跨多个事务的查询时非常有用,同时也可以避免因长...

    DetachedCriteria笔记

    DetachedCriteria

    Hibernate - DetachedCriteria 的完整用法

    使用 DetachedCriteria 可以很方便地根据查询条件来返回查询结果,Spring 框架提供了 `getHibernateTemplate().findByCriteria(detachedCriteria)` 方法来实现这一点。 Criteria 和 DetachedCriteria 均可使用 ...

    DetachedCriteria使用介绍

    条件查询** - **多条件的 and 规则**:默认情况下,多次添加的条件会按照 AND 连接。例如,使用 `searDc.add(Restrictions.eq("unid", userid))` 添加多个条件时,这些条件将以 AND 规则连接在一起。 - **多条件...

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

    在Java的持久化框架Hibernate中,DetachedCriteria是一个强大的查询工具,它允许我们在不与Session交互的情况下构建查询条件。然而,DetachedCriteria在处理复杂的关联查询,尤其是涉及到表连接(JOIN)时,可能存在...

    DetachedCriteria Criteria 使用方法

    - **使用场景**:`Criteria` 适用于即时查询,而 `DetachedCriteria` 更适合跨层传递查询条件。 - **灵活性**:`DetachedCriteria` 提供了更大的灵活性,可以在不同层之间传递而不会丢失查询状态。 #### 三、`...

    浅谈DetachedCriteria和Criteria的使用方法(必看)

    在Web编程中,DetachedCriteria和Criteria可以解决动态条件查询的问题,提高程序的灵活性和可维护性。 DetachedCriteria的使用方法: DetachedCriteria是离线的查询工具,可以在Web层构造查询条件,然后将其传递给...

    Java_Hibernate QBC条件查询对比

    本篇文章将深入探讨Hibernate中的QBC(Query By Example)条件查询与传统的HQL(Hibernate Query Language)查询的对比,帮助开发者更好地理解和选择适合的查询方式。 QBC(Query By Example)是Hibernate提供的一...

    Hibernate_Criteria条件查询数据

    10. **使用DetachedCriteria**:当查询条件在未来的某个时刻才确定时,可以先创建一个DetachedCriteria对象,然后在需要的时候再与Session关联并执行查询。 在实际开发中,Hibernate Criteria查询提供了很大的便利...

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

    在这个“springMVC+hibernate的条件查询加分页的demo”中,我们将探讨如何结合这两个框架实现动态的条件查询和分页功能。 首先,让我们了解一下SpringMVC中的条件查询。在SpringMVC中,通常通过Controller层接收...

    hibernate中的查询方式

    DetachedCriteria是Criteria API的一个扩展,它允许在业务层创建查询条件,并在数据访问层执行查询。 **特点:** - **面向对象:** 继承了Criteria API的所有优点。 - **业务逻辑分离:** 可以将查询条件的构建与...

    \Hibernate_query条件查询

    《Hibernate查询条件查询详解》 Hibernate作为Java领域中广受欢迎的对象关系映射(ORM)框架,极大地简化了数据库操作。其强大的查询能力是其核心功能之一。本篇将深入探讨Hibernate的条件查询,帮助开发者更好地...

    QBC的各种查询

    QBC提供了一种面向对象的方式来构建查询条件,与SQL语句相比,它更易于理解和维护,尤其在处理复杂的查询逻辑时。在本资料中,我们深入探讨QBC的各种查询技术及其在MVC架构下的应用。 首先,我们要理解QBC的基本...

    hibernate_criterion.rar

    在上述代码中,我们创建了一个DetachedCriteria对象,设置了查询条件为用户名等于"admin",然后在主查询中添加了这个子查询条件。 Criterion查询还可以与Projection一起使用,实现分组、聚合等功能。Projection是...

    Hibernat 使用Criteria查询多对多关系(SET集合)条件

    ### Hibernat 使用Criteria查询多对多关系(SET集合)条件 #### 背景介绍与概念理解 在Java开发中,特别是在企业级应用中,持久化层的处理至关重要。Hibernate作为一款流行的Java持久化框架,它提供了一种非常简便...

    Hibernate中Criteria的使用

    Criteria 和 DetachedCriteria 都可以使用Criterion 和 Projection 设置查询条件,可以设置 FetchMode(联合查询抓取的模式)、设置排序方式,对于 Criteria 还可以设置 FlushMode(冲刷 Session 的方式)和 ...

    Hibernate中Criteria的完整用法.docx

    Criteria 和 DetachedCriteria 均可使用 Criterion 和 Projection 设置查询条件。可以设置 FetchMode(联合查询抓取的模式)、设置排序方式。对于 Criteria 还可以设置 FlushModel(冲刷 Session 的方式)和 ...

    Hibernate中Criteria的完整用法

    Criteria 和 DetachedCriteria 均可使用 Criterion 和 Projection 设置查询条件。可以设置 FetchMode(联合查询抓取的模式),设置排序方式。对于 Criteria 还可以设置 FlushModel(冲刷 Session 的方式)和 ...

    hibernate查询详解

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

Global site tag (gtag.js) - Google Analytics