直接贴代码吧:
Class clazz = ServiceHelper.getRelateClazz(tag);
DetachedCriteria query = DetachedCriteria.forClass(clazz);
query.add(Restrictions.ge("updatetime", updatetime));
Collection<String> fieldList = getFieldList(tag, fields);
ProjectionList properties = Projections.projectionList();
for(String field: fieldList){
properties.add(Projections.property(field));
}
query.setProjection(properties);
query.setResultTransformer(DetachedCriteria.ALIAS_TO_ENTITY_MAP);
List<Map> resultList = hibernateTemplate.findByCriteria(query, from, Math.min(maxnum, 1000));
同样的逻辑,如果拼SQL则没有问题,使用HQL就取出的是[{}]
百撕不得其姐呀。 终于。。。
http://www.iteye.com/topic/363586 这个找到了一点苗头。 感谢党。
总结:
Projections.projectionList().add(Projections.property(field));时是需要一个别名的,修改为 Projections.projectionList().add(Projections.property(field).as(field)) 就OK了。
以上.
分享到:
相关推荐
DetachedCriteria 查询 DetachedCriteria 是 Hibernate 中的一种离线查询对象,它可以在不依赖 Session 的情况下生成动态 SQL 语句并进行查询。下面是 DetachedCriteria 查询的详细知识点: 创建 DetachedCriteria...
除了基本的条件和排序,DetachedCriteria还可以进行子查询、连接查询、分组聚合等复杂操作。例如,你可以使用`createCriteria()`方法来建立关联查询,或者使用`setProjection()`设置分组或聚合函数。 **7. 总结** ...
DetachedCriteria
子查询是 `DetachedCriteria` 的另一大亮点,它可以让你在主查询中嵌入另一个查询语句。例如,要查询所有与特定职务相关的人员,可以通过以下方式实现: ```java // 主查询: 人员查询 DetachedCriteria searDc = ...
使用 DetachedCriteria 可以很方便地根据查询条件来返回查询结果,Spring 框架提供了 `getHibernateTemplate().findByCriteria(detachedCriteria)` 方法来实现这一点。 Criteria 和 DetachedCriteria 均可使用 ...
在Java的持久化框架Hibernate中,DetachedCriteria是一个强大的查询工具,它允许我们在不与Session交互的情况下构建查询条件。然而,DetachedCriteria在处理复杂的关联查询,尤其是涉及到表连接(JOIN)时,可能存在...
- `forEntityName(String)`: 根据实体名称创建 `DetachedCriteria` 实例。 示例代码: ```java DetachedCriteria criteria = DetachedCriteria.forClass(User.class); ``` ##### 3.2 使用 `DetachedCriteria` 在...
总的来说,这篇文章可能会深入探讨如何使用Hibernate的Criteria API来构建多列`IN`查询,包括与子查询的结合,以及如何处理可能存在的`NULL`值问题。这对于理解和优化Hibernate的查询性能至关重要,特别是在处理大...
DetachedCriteria提供了两个静态方法,forClass(Class)和forEntityName(Name),用于创建DetachedCriteria实例。DetachedCriteria可以在Session范围内直接构造Criteria,进行查询。这样,查询语句的构造完全被搬离到...
- **分组**:使用`setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)`或`setResultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP)`进行分组查询。 #### 七、总结 通过本文的介绍,我们可以了解到...
6. **子查询**:DetachedCriteria支持创建子查询,可以嵌套在主查询中,以实现复杂的查询逻辑。 7. **动态查询**:QBC的动态性体现在可以根据运行时的参数灵活构造查询条件,非常适合在用户输入不确定的情况下构建...
三、Entity类与表的映射 在Hibernate中,每一个数据库表都对应一个Java类,称为实体类。我们需要在实体类中定义属性,这些属性与数据库表的字段相对应。例如,如果我们要查询一个名为`users`表中的`username`字段,...
之后,我们使用`createCriteria`创建主查询,并通过`Subqueries.propertyIn`方法添加子查询,这样就能找到所有与用户名为'test'的用户有相同ID的用户。 ### 学习资源 为了更好地学习和理解这些概念,你可以参考...
然而,QBC在处理复杂的查询,如多表联接、子查询或者自定义SQL片段时,可能会显得力不从心,此时它的灵活性和表达能力相对较弱。 相对而言,HQL是一种面向对象的查询语言,类似于SQL,但更加面向对象。开发者可以...
在复杂的查询场景下,可以使用DetachedCriteria来预定义查询条件,然后在需要时再与其他查询组合使用。 5. **命名查询(Named Queries)**: 如果某些查询模式经常被使用,可以定义命名查询,将其写入XML映射文件...
8. **子查询**:Criteria也支持子查询,可以将一个Criteria作为另一个Criteria的条件。这对于构建复杂的查询逻辑非常有用。 9. **动态Criteria**:动态Criteria允许在运行时动态地构造查询条件,适合于根据用户输入...
四、连接查询与子查询 Criteria API也支持连接查询,通过`createCriteria(String associationPath)`方法创建关联的Criteria。例如,查询所有有项目的用户: ```java criteria.createCriteria("projects").add...
在上述代码中,我们创建了一个DetachedCriteria对象,设置了查询条件为用户名等于"admin",然后在主查询中添加了这个子查询条件。 Criterion查询还可以与Projection一起使用,实现分组、聚合等功能。Projection是...
10. **Criteria API与DetachedCriteria**:Criteria API用于在Session中执行查询,而DetachedCriteria则允许在Session之外构建查询条件,再在Session中执行。 11. **Criteria与HQL的比较**:两者都是ORM查询方式,...
同时,HQL还支持连接查询、子查询和聚合函数,使得复杂的数据检索变得轻松。 接下来,是**Criteria查询**。Criteria API是Hibernate提供的另一种查询方式,它是更加面向对象的查询接口,提供了一种动态构建查询的...