`

Hibernate用Criteria查询时使用Distinct方法去除重复数据

阅读更多
[hibernate]Hibernate用Criteria查询时使用Distinct方法去除重复数据

//片段代码

Criteria criteria = session.createCriteria(User.class);

criteria.add(Restrictions.like("name", name, MatchMode.ANYWHERE));

criteria.createAlias("perms","p");

criteria.add(Restrictions.in("p.uuid", perms));    //join 查询,出现重复数据

criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);    //设置ENTITY级的DISTINCT模式,根实体

criteria.list();    //得出去除了重复数据后的结果集

//注:此方法完全正确,如果不成功请查看是否有其它类的方法把criteria.setResultTransformer设成了其它的值。

注:转载请注明原文出处!

 

为了您的安全,请只打开来源可靠的网址

打开网站    取消

来自: http://hi.baidu.com/xiaolangs/blog/item/5bc758d3307f75043af3cf31.html

<script type="text/javascript"></script>

分享到:
评论
1 楼 loverswordsman 2010-08-18  
引用
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);    //设置ENTITY级的DISTINCT模式,根实体

这种方式的去重是在查询结果出来后去的,在数据库中查询语句查出来的还是会有重复的记录,在限制返回记录条数的条件查询中,还是会出现问题。

相关推荐

    Hibernate学习资料(离线查询)

    为了去除重复的结果,可以使用`setResultTransformer`方法,例如: ```java crite.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); ``` 这样处理后的结果集将只包含唯一的根实体对象。 #### 动态查询 在...

    安博Hibernate最全培训资料内部版

    - **DISTINCT**:用于过滤重复的查询结果。 - **DELETE**和**UPDATE**:支持对象的删除和更新操作。 - **计算属性值**:允许在查询中进行简单的数学运算。 - **函数支持**:支持常见的SQL函数如`lower`、`upper`等。...

    Hql语句注意事项总结

    在使用Hibernate的HQL(Hibernate Query Language)时,有一些关键的注意事项需要理解并遵循,以确保查询的正确性和效率。以下是对这些要点的详细说明: 1. **在Hql中使用`group by`的问题** - **统计函数与分组**...

    java工程师面试题大全

    - **解决方案**: 在Hibernate的Criteria API中,可以通过调用`setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)`方法来去除查询结果中的重复项。这会确保查询结果只包含唯一的根实体对象。 #### 二、HTTP与...

    java软件工程师面试题

    Hibernate 提供了 `Criteria.DISTINCT_ROOT_ENTITY` 结果转换器,用于在查询时去除结果集中的重复实体。在 Criteria 查询中,添加 `dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);` 可以确保返回的实体...

    杭州公司笔试题目.doc

    dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY) 是 Hibernate 框架中用于去除重复项的方法。Criteria.DISTINCT_ROOT_ENTITY 是一个标记,用于指定结果集的去重方式。在 Hibernate 中,我们可以使用 ...

    Java面试题

    Hibernate中的Criteria查询可以通过设置ResultTransformer为DISTINCT_ROOT_ENTITY来去除查询结果中的重复实体。`dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);` 这一行代码的作用是确保返回的实体结果...

    Java程序员面试题搜集

    Hibernate 提供了 `dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);` 来去除查询结果中的重复实体。这会在查询执行后对结果进行处理,确保返回的根实体是唯一的。 2. **HTTP和SMTP协议及端口**: HTTP...

    300+道中高级java工程师面试题大全含答案文档下载

    1. **Hibernate离线查询去除重复项**:在Hibernate中,使用Criteria API时,可以设置ResultTransformer为`Criteria.DISTINCT_ROOT_ENTITY`来去除查询结果中的重复实体。 2. **HTTP与SMTP协议及端口**:HTTP是用于...

    java工程师面试题

    Hibernate框架提供了Criteria接口,可以使用`Criteria.DISTINCT_ROOT_ENTITY`作为结果转换器来去除查询结果中的重复项。 2. HTTP与SMTP协议及其端口: - HTTP(超文本传输协议)默认使用80端口,用于客户端与...

    java工程师面试题大全-100%公司笔试题你都能碰到几个

    - **解决方案**: 在Hibernate的Criteria API中,可以通过调用`setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)`方法来去除查询结果中的重复项。 #### 二、HTTP与SMTP协议及其端口 - **HTTP**: 超文本传输协议...

    java面试题集锦(附答案)

    Hibernate中的Criteria API提供了去除查询结果重复项的方法,`dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);`这行代码会确保返回的结果集中不会有重复的根实体对象。 2. **HTTP与SMTP协议及其端口**:...

    java工程师面试题大全100%公司笔试题你都能碰到几个

    在Hibernate中,使用dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)可以去除重复项。 2. HTTP协议及端口、SMTP协议及端口 HTTP(HyperText Transfer Protocol)是一种超文本传输协议,使用80端口。SMTP...

    Java笔试题目.doc

    1. **离线查询去除重复项**:在Hibernate的Criteria查询中,使用`dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)`可以去除结果集中重复的根实体。 2. **网络协议与端口**:HTTP协议通常使用80端口,SMTP...

    java 面试题 新的应该是 java 笔试题

    在JPA或Hibernate中,我们可以使用`Criteria.DISTINCT_ROOT_ENTITY`作为结果转换器来去除查询结果中的重复根实体。 2. **HTTP和SMTP协议及其端口**:HTTP协议通常运行在端口80上,用于传输网页内容;SMTP(Simple ...

    java面试大全

    Hibernate 提供了一个方便的方法来去除查询结果中的重复实体,即 `dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);` 这行代码会确保返回的实体结果是唯一的,避免了由于关联查询导致的重复数据。 2. **...

    java_软件工程师面试题

    为了实现这一目标,开发者可以使用`Criteria` API中的`setResultTransformer`方法,将查询结果转换器设置为`Criteria.DISTINCT_ROOT_ENTITY`。这一操作会确保查询结果中只包含唯一的实体对象,即使这些对象可能在...

    java工程师面试题大全-100%公司笔试题你都能碰到几个.pdf

    **解决方案**: 使用`Criteria` API中的`setResultTransformer()`方法,并传递`Criteria.DISTINCT_ROOT_ENTITY`参数,可以有效地去除查询结果中的重复项。 **代码示例**: ```java Criteria criteria = session....

    hql语句查询

    使用`distinct`关键字可以去除查询结果中的重复元素: ```java hql = "select distinct e.category from MyEntity e"; List&lt;Category&gt; categories = query.list(); ``` 以上就是HQL查询的基本用法,通过这些操作,...

Global site tag (gtag.js) - Google Analytics