首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Hibernate list()返回重复项是否有效?

Hibernate list()返回重复项是否有效?
EN

Stack Overflow用户
提问于 2009-10-13 13:25:49
回答 4查看 20.8K关注 0票数 29

有没有人知道Hibernate的Criteria.list()Query.list()方法返回同一实体的多次出现的有效性?

有时,我在使用Criteria API时发现,更改类映射定义中的默认获取策略(从"select“更改为"join")有时会影响list()的结果输出中可以出现多少对同一实体的引用,我不确定是否将其视为错误。javadoc并没有定义它,它只是说“匹配的查询结果列表”。(谢谢你们)。

如果这是预期的和正常的行为,那么我可以自己去重复列表,这不是问题,但如果这是一个bug,那么我宁愿避免它,而不是去去重复结果并试图忽略它。

有谁有这方面的经验吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-10-13 13:34:03

是的,如果你构造你的查询,那么获取重复项是完全可能的。有关示例Hibernate CollectionOfElements EAGER fetch duplicates elements,请参阅

票数 23
EN

Stack Overflow用户

发布于 2016-08-27 00:14:57

当我的Java API开始增长时,我也开始注意到它的行为。很高兴有一个简单的方法来防止它。出于练习,我开始添加:

代码语言:javascript
运行
复制
.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)

我的所有返回列表的条件。例如:

代码语言:javascript
运行
复制
List<PaymentTypeAccountEntity> paymentTypeAccounts = criteria()
  .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
  .list();
票数 6
EN

Stack Overflow用户

发布于 2010-04-14 08:18:59

如果您有一个对象,其中包含一个子对象列表,并且您的条件将这两个表连接在一起,则可能会得到主对象的副本。

确保不会得到重复数据的一种方法是使用DistinctRootEntityResultTransformer。这样做的主要缺点是如果您使用的是结果集缓冲/行计数。这两者不能一起工作。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1560239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档