0 0

hibernate 一对多 join fetch 重复记录问题5

用hql   join 查询有重复记录,情况如下:

有表对应的实体 Order, OrderDetails, order(一) : orderDetails (多)


用以下hql 查询

select o FROM Order o join fetch o.orderDetails where o.id = 1


id为1的order对应有2条OrderDetails记录,查询出来是2条一模一样的Order对象 ,网上查了可以用 distinct处理之,但是生成的sql也是带有 distinct字眼的,distinct 会极大的降低性能,有没有其他的处理方式。


(别告诉我查询出来堆进set里面去重,每个地方都要这么处理一下,我认为这办法很烂。)
2012年10月19日 10:51

3个答案 按时间排序 按投票排序

0 0

1、就如你说的distinct
2、group by 查id 然后再发一条sql查之

但是生成的sql也是带有 distinct字眼的,distinct 会极大的降低性能,有没有其他的处理方式。   这个你得测试下,多高的性能是你需要的

3、用集合排重也不是不行(排重复杂度O(N)) 主要消耗在传输数据的带宽上

如果查出来重复数比较多
1、考虑distinct
2、只下发id  然后再查一次

2012年10月19日 12:15
0 0

Order和OrderDetail之间存在着一对多的映射关系,配置好映射文件,如果想获取Order可以执行FROM Order o where o.id = 1,如果想要OrderDetail可以从该Order里面的List<OrderDetail>或者Set<OrderDetail>里面取,可以用lazy加载方式。

2012年10月19日 12:00
0 0

什么算重复?比如有2条记录name都一样的认为重复了?
如果算,那么这个应该是数据问题,没有唯一验证。。也就是在存入的时候,没有验证数据库是否存在了该记录,
如果不需要唯一验证,而强调数据重发。。重复应该有个规则,。当然能解决问题的方法就是好方法。 (查询出来堆进set里面去,这样我开也行)

2012年10月19日 11:32

相关推荐

    Hibernate一对一,一对多,多对多实例

    本实例将深入探讨Hibernate中的三种基本关联关系:一对一(One-to-One)、一对多(One-to-Many)以及多对多(Many-to-Many)的实现方式。 1. **一对一关联**: 一对一关联通常出现在两个实体之间存在唯一对应关系...

    hibernate一对多实例

    标题中的“hibernate一对多实例”指的是在Java编程中使用Hibernate框架处理数据库关系时的一对多关联映射。Hibernate是Java领域中的一个流行对象关系映射(ORM)框架,它允许开发者用面向对象的方式操作数据库,从而...

    hibernate一对多代码

    本文将详细解析"hibernate一对多映射"的概念、配置及其实现过程,以帮助理解并掌握这一核心特性。 首先,我们要明白在关系型数据库中,"一对多"关系意味着一个实体(比如一个部门)可以有多个相关实体(如部门下的...

    Hibernate Fetch 的作用

    在提供的代码示例中,`Parent`类与`Child`类之间存在一对多的关系。默认情况下,当加载`Parent`实体时,其关联的`Child`实体不会立即加载,这是因为默认的Lazy策略在起作用。然而,如果在某些情况下我们需要立即获取...

    hibernate一对多与多对一

    本篇文章将详细讲解"hibernate一对多与多对一"的关系映射概念,以及如何在实际开发中进行配置和使用。 首先,我们来看一下“一对多”关系。在现实世界中,这种关系可以对应到例如一个班级有多个学生,或者一个人...

    hibernate实例(一对多,多对一)

    在这个“hibernate实例(一对多,多对一)”的主题中,我们将深入探讨两种重要的关联关系:一对一(One-to-One)和一对多(One-to-Many)。 **一对一关联(One-to-One)** 在一对一关联中,一个实体与另一个实体之间...

    Hibernate annotation JPA 一对多,多对多

    在本主题中,我们将深入探讨使用Hibernate注解来实现JPA的一对多、多对多和多对一的关系映射。 1. **一对多关系**: 在现实世界中,一个老师可以教多个学生,或者一个班级可以包含多个学生,这就是典型的一对多...

    hibernate 一对多

    一、Hibernate一对多关系概述 在数据库设计中,一对多关系意味着一个表(父表)中的记录可以与另一个表(子表)中的多个记录相对应。例如,一个学生可以有多个课程,而一门课程可以被多个学生选修。在Hibernate中,...

    Hibernate一对多

    **标题:“Hibernate一对多”** 在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它允许开发者用面向对象的方式处理数据库操作。在关系型数据库中,"一对多"关系是一种常见的关联类型,表示一个...

    Hibernate一对多关联实例

    本文将详细解析" Hibernate一对多关联实例 ",并涵盖关联的保存(save)、删除(delete)、查询(select)和更新(update)操作。 一、一对多关联概念 在数据库设计中,一对多关联表示一个表中的记录可以与另一个表中的多个...

    Hibernate一对多(多对一)双向关联(annotation/xml)

    在Java的持久化框架Hibernate中,一对多(Many-to-One)和多对一(One-to-Many)的关系映射是数据库关系模型中的常见关联类型。本文将深入探讨这两种关联方式在使用Hibernate时的配置,包括基于注解(Annotation)和...

    Hibernate 系列教程 单向一对多

    在数据库设计中,一对多关系意味着一个父表记录可以与多个子表记录相关联。例如,一个学生可以有多个课程,或者一个部门可以有多名员工。在Hibernate中,这种关系可以通过配置XML映射文件或使用注解来实现。 首先,...

    Hibernate一对多,多对一映射

    在处理一对多关系时,还需要注意避免无限递归的问题,特别是在使用反向关系时。这可以通过在`@ManyToOne`或`@OneToOne`注解中设置`mappedBy`属性来解决,指定关联的字段。 总的来说,Hibernate的一对多和多对一映射...

    Hibernate 一对一,一对多,多对多例子

    “Hibernate 一对一,一对多,多对多例子” 指的是使用Hibernate框架实现数据库中不同关联关系的示例。Hibernate是一个Java持久化框架,它提供了对象关系映射(ORM)功能,使得开发人员可以方便地在Java对象和关系...

    hibernate多对一关联关系

    在Java的持久化框架Hibernate中,"多对一"关联关系是一种常见的对象关系映射(ORM)设计,它表示一个实体(子项)可以与多个其他实体(父项)相关联,而每个父项可能被多个子项引用。在数据库层面,这通常对应于一个...

    hibernate(多对多关系映射)

    在Java的持久化框架Hibernate中,多对多(Many-to-Many)关系映射是一种常见的数据库交互模式,它用于表示两个实体之间复杂的关系。在这个场景中,一个实体可以与多个其他实体相关联,反之亦然。例如,在学生和课程...

    Hibernate一对多单向关联映射

    在Java的持久化框架Hibernate中,一对多关系是常见的实体关联映射方式,它表示一个实体可以与多个其他实体相对应。本篇文章将深入探讨Hibernate中一对多单向关联映射的概念、配置以及其实现方法。 一、概念理解 一...

Global site tag (gtag.js) - Google Analytics