来源:
http://www.iteye.com/problems/11751
怎么用Hibernate写SQL里的in式的子查询
select * from tableA where tableA.Id in (select Id from tableA where tableA.name like "M%")
大家帮我看看用Hibernate里的DetachedCriteria和Subqueries等来把上面的SQL转为Hibernate的查询条件呢?
采纳的答案
2009-02-23 sophia_230 (初级程序员)
DetachedCriteria a_ids = DetachedCriteria.forClass(tableA.class, "inner")
.setProjection(Property.forName("inner.id")).add(( Property.forName("inner.name").like("M",MatchMode.START) ));
return super.getSession().createCriteria(tableA.class, "outer")
.add( Property.forName("id).in(a_ids)).list();
--------------------------------------------------------------------------------
来源:
http://www.iteye.com/problems/11751
分享到:
相关推荐
除了基本的条件和排序,DetachedCriteria还可以进行子查询、连接查询、分组聚合等复杂操作。例如,你可以使用`createCriteria()`方法来建立关联查询,或者使用`setProjection()`设置分组或聚合函数。 **7. 总结** ...
子查询是 `DetachedCriteria` 的另一大亮点,它可以让你在主查询中嵌入另一个查询语句。例如,要查询所有与特定职务相关的人员,可以通过以下方式实现: ```java // 主查询: 人员查询 DetachedCriteria searDc = ...
在Oracle数据库中,`IN`操作符是一种常用的查询方式,它允许我们检查某个值是否在一个给定的集合或子查询结果中。例如,如果我们有一个表`employees`,包含`column1`和`column2`列,我们可以用如下SQL查询来找出`...
6. **子查询**:DetachedCriteria支持创建子查询,可以嵌套在主查询中,以实现复杂的查询逻辑。 7. **动态查询**:QBC的动态性体现在可以根据运行时的参数灵活构造查询条件,非常适合在用户输入不确定的情况下构建...
然而,QBC在处理复杂的查询,如多表联接、子查询或者自定义SQL片段时,可能会显得力不从心,此时它的灵活性和表达能力相对较弱。 相对而言,HQL是一种面向对象的查询语言,类似于SQL,但更加面向对象。开发者可以...
8. **子查询**:Criteria也支持子查询,可以将一个Criteria作为另一个Criteria的条件。这对于构建复杂的查询逻辑非常有用。 9. **动态Criteria**:动态Criteria允许在运行时动态地构造查询条件,适合于根据用户输入...
2. **DetachedCriteria**:这是一个离线查询对象,可以在不与Session交互的情况下构建查询条件,然后在需要的时候再与Session结合执行,这对于延迟加载和构建复杂的查询非常有用。 3. **Criteria查询的构建**:包括...
在上述代码中,我们创建了一个DetachedCriteria对象,设置了查询条件为用户名等于"admin",然后在主查询中添加了这个子查询条件。 Criterion查询还可以与Projection一起使用,实现分组、聚合等功能。Projection是...
- **优点**:HQL具有强大的功能,可以处理复杂的查询,包括关联查询、子查询和集合操作。同时,HQL支持动态查询,可以根据参数动态构造查询语句,适合于复杂或动态的查询需求。 - **基本结构**:HQL查询通常以`from...
HQL支持复杂的查询,如联接、子查询、聚合函数等,使得数据库操作更为灵活。 ### 查询构建器(Query by Criteria) Query by Criteria是Hibernate提供的另一种查询方式,它提供了一种更面向对象的API来构建查询。...
同时,HQL还支持连接查询、子查询和聚合函数,使得复杂的数据检索变得轻松。 接下来,是**Criteria查询**。Criteria API是Hibernate提供的另一种查询方式,它是更加面向对象的查询接口,提供了一种动态构建查询的...
在实际应用中,Criteria API还可以与其他高级特性结合使用,如DetachedCriteria(用于延迟加载)和Subqueries(用于子查询)。此外,它支持连接查询(join)、分组(group by)和Having条件,可以实现复杂的查询逻辑...
在Java世界里,Hibernate是一个非常流行的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。本篇将详细探讨Hibernate中的Criteria API,这是一种灵活且强大的查询机制,...
// 子查询结果映射到id属性 ``` 9. **投影与聚合函数** 投影用于获取特定列,而聚合函数(如COUNT, SUM, AVG等)用于统计。例如: ```java // HQL query = session.createQuery("select count(u) from User u...
11. **复杂查询与子查询**:包括联合查询、分组与聚合函数、子查询的使用,以及如何在HQL和Criteria API中实现。 12. **高级特性**:涵盖动态模型、事件监听器、类型转换器、CGLIB和ASM代理等高级话题。 ...
Hibernate 支持复杂的联接查询和子查询,可以方便地进行多表操作。 9. 批量操作与缓存: Hibernate 提供了批处理功能,可以批量插入、更新和删除数据,提高性能。同时,它内置了第一级缓存和第二级缓存机制,用于...
以下是一个简单的例子,查询所有`Employee`类的实例: ```java Criteria cr = session.createCriteria(Employee.class); List results = cr.list(); ``` 2. **比较运算符** Criteria API 提供了丰富的比较...
通过调用`Session.createCriteria()`方法,我们可以创建一个Criteria实例。例如: ```java Criteria criteria = session.createCriteria(User.class); ``` 这里的`User.class`表示我们要查询的是User实体对应的表。...
9. **一对多与多对一关系**:讲解如何处理实体间的关联关系,如一个用户有多个订单(一对多)或者一个订单对应一个用户(多对一)的映射配置。 10. **多对多关系**:讨论多对多关系的映射,包括中间表的自动管理和...