`
pengjj2
  • 浏览: 139338 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

Hibernate父子类同时映射一张表的问题

阅读更多

今天在开发时发现一个问题

在查询一张表的 count 的时候,居然返回了2个值,Hibernate报错说不止一个结果。

 

大吃一惊,不过是一个单表查询而已,出现了这样的问题。后来查找资料和项目发现,项目里用父类A,子类B。

 

A和B都映射了同一张表。

 

这样查询就出问题了,如果查询父类,将返回2个结果集,所以对于unique方式的查询,一律报错。
但是有意思的是,如果查询子类,则不会有问题。

 

解决方法,在映射xml中就是配置文件中polymorphism属性的设置问题。polymorphism默认值为 implicit 是隐式的实现多态。这种方式会导致查询超类的时候,会把子类的结果集也返回回来。

所以在父子类的映射文件中,将polymorphism属性设置为explicit。也就是显示的实现多态。

问题解决

分享到:
评论

相关推荐

    hibernate父亲与孩子

    在IT领域,尤其是在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作。本文将深入探讨“Hibernate父亲与孩子”这一主题,即Hibernate中的多对一和一对多关系映射,以及如何...

    Hibernate映射树形结构

    在IT行业中,数据库管理和对象关系映射(ORM)框架是至关重要的组成部分,特别是对于Java开发者而言,Hibernate是一个广泛使用的ORM工具。本篇文章将深入探讨如何在Hibernate中映射树形结构,这是一种处理复杂数据...

    hibernate 一对多映射

    5. **实体类**:定义Java类并使用Hibernate的注解(如`@Entity`、`@Table`等)进行ORM映射。每个实体类代表数据库中的一个表。 6. **持久化操作**:使用`Session`的`save()`、`update()`、`delete()`和`load()`方法...

    hibernate中文参考文档

    8. 继承映射:Hibernate支持不同类型的继承映射策略,包括单表策略、每个具体类策略和类表策略。文档将详细介绍这些策略及其适用场景。 9. 操作持久化数据:包括如何使用Hibernate API来增加、删除、修改和查询...

    struts2 hibernate 实现无限级联 树形分类

    在Hibernate的配置文件(如`hibernate.cfg.xml`)中,我们需要定义`Category`实体类及其与数据库表的映射。实体类中,我们可以使用`@Entity`注解标记类,`@Id`注解标记主键字段,以及`@ManyToOne`或`@OneToOne`注解...

    Struts_Spring_Hibernate_CRUD操作案例_-分页查询

    - **实体类**:代表数据库表,通过注解或XML映射文件与数据库表建立关联。 - **Session接口**:执行数据库操作的主要接口,包括CRUD操作和查询。 - **HQL/JPQL**:Hibernate查询语言,类似SQL,用于对象级别的...

    struts+hibernate+单表的增删改查

    ### Struts2 + Hibernate + 单表的增删改查 #### 一、概述 在当前的软件开发领域,特别是企业级应用开发中,MVC(Model-View-Controller)架构模式被广泛应用。Struts2作为Java Web开发中的经典框架之一,提供了...

    Hibernate one-to-many / many-to-one关系映射

    在Java的持久化框架Hibernate中,关系映射是数据库对象之间的关联方式,它允许我们将复杂的数据库结构映射到Java对象上。"Hibernate one-to-many / many-to-one关系映射"是两个基本的关系类型,用于表示实体间的关联...

    Hibernate一对多单向关联映射

    本文将深入探讨Hibernate中的一对多单向关联映射,这是数据库表之间常见的一种关系类型。 **一、Hibernate基础** Hibernate是一个基于Java的持久化框架,它通过XML或注解方式定义对象和数据库表之间的映射关系,...

    Hibernate+中文文档

    18.1.1. 指定同时映射XML和类 18.1.2. 只定义XML映射 18.2. XML映射元数据 18.3. 操作XML数据 19. 提升性能 19.1. 抓取策略(Fetching strategies) 19.1.1. 操作延迟加载的关联 19.1.2. 调整抓取策略(Tuning ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     3.4.2 把Customer持久化类映射到CUSTOMERS表  3.5 通过Hibernate API操纵数据库  3.5.1 Hibernate的初始化  3.5.2 访问Hibernate的Session接口  3.6 运行helloapp应用  3.6.1 创建运行本书范例的系统环境  ...

    hibernate_-annotations_中文帮助文档

    有三种继承策略:单一表、每类一张表和连接子类。 - **映射关联关系** 包括一对一(`@OneToOne`)、多对一(`@ManyToOne`)、多对多(`@ManyToMany`)和一对多(`@OneToMany`),并使用`@JoinColumn`和`@JoinTable`注解...

    hibernate3.2中文文档(chm格式)

    18.1.1. 指定同时映射XML和类 18.1.2. 只定义XML映射 18.2. XML映射元数据 18.3. 操作XML数据 19. 提升性能 19.1. 抓取策略(Fetching strategies) 19.1.1. 操作延迟加载的关联 19.1.2. 调整抓取策略(Tuning ...

    HibernateAPI中文版.chm

    18.1.1. 指定同时映射XML和类 18.1.2. 只定义XML映射 18.2. XML映射元数据 18.3. 操作XML数据 19. 提升性能 19.1. 抓取策略(Fetching strategies) 19.1.1. 操作延迟加载的关联 19.1.2. 调整抓取策略(Tuning ...

    Hibernate原理简介的Java项目

    ORM是Hibernate的核心特性,它将Java类与数据库表进行映射,使得开发人员可以像操作普通Java对象一样操作数据库记录。在Hibernate中,这种映射是通过`hibernate.cfg.xml`配置文件和实体类的注解完成的。 2. **配置...

    java私塾独家首发最新Hibernate4教程

    实体类代表数据库中的表,而配置文件则定义了这些表与实体类之间的映射关系。 **1.3 Hibernate4能做什么** - **数据持久化**:提供了一种简单的方式来存储和检索应用中的对象。 - **事务管理**:支持本地事务和...

    hibernate3.2中文教程

    7. **一对多、多对一、多对多关系**:Hibernate支持多种关系映射,如实体类间的父子关系、一对多关系、多对一关系和多对多关系,通过配置文件或注解设定。 8. **缓存机制**:为了提高性能,Hibernate提供了缓存机制...

    Hibernate中文详细学习文档

    18.1.1. 指定同时映射XML和类 18.1.2. 只定义XML映射 18.2. XML映射元数据 18.3. 操作XML数据 19. 提升性能 19.1. 抓取策略(Fetching strategies) 19.1.1. 操作延迟加载的关联 19.1.2. 调整抓取策略(Tuning ...

    最全Hibernate 参考文档

    18.1.1. 指定同时映射XML和类 18.1.2. 只定义XML映射 18.2. XML映射元数据 18.3. 操作XML数据 19. 提升性能 19.1. 抓取策略(Fetching strategies) 19.1.1. 调整抓取策略(Tuning fetch strategies) 19.1.2. 单端...

Global site tag (gtag.js) - Google Analytics