`
HuNanPengdake
  • 浏览: 236344 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Hibernate使用SQL查询同名字段结果问题

阅读更多

文章只是简短的记录一下这个问题,其实早两年就发现了,但是没有刻意去记录,导致在同一个地方跌倒两次,耻辱啊...

 

问题描述:

select a.id, b.id from c_app_info a inner join a_app_info b on a.packName=b.packName

这段语句直接放在数据库执行得到的结果是

a.id        b.id

1             5

 

Hibernate在使用SQL查询的时候,对于结果集中出现同名字段的情况,处理结果有问题,具体结果表现为:

a.id         b.id

1               1

 

个人认为就是框架问题。网上很多人说了很多种我认为比较复杂的方式回避这个问题,我在这说一种更简单的回避方式:

select ifnull(a.id,null) cId,ifnull(b.id,null) aId from c_app_info a inner join a_app_info b on a.packName=b.packName

 

只需将SQL改为上面这样就OK了,各位可以去测试,本人已测试通过的。

分享到:
评论

相关推荐

    hibernate将本地SQL查询结果封装成对象(最终)

    使用本地sql语句查询后,无需再使用Object对查询结果进行强制转换,而是直接将查询结果放到实体Bean里了。 PS: 其实只有一版,这里只所以叫最终版是因为该附件我上传了好几天传不上去,到最后报告说‘资源已经存在...

    让hibernate输出sql语句参数配置.doc

    hibernate.session_factory_name 参数用于 SessionFactory 创建后,将自动使用这个名字绑定到 JNDI 中。其取值为 jndi/composite/name。 7. hibernate.max_fetch_depth hibernate.max_fetch_depth 参数用于设置...

    Hibernate+本地SQL查询SQLQuery.pdf

    当查询涉及到多张表时,可能存在同名字段,这可能导致字段映射错误。为了避免这种问题,可以使用别名。例如: ```java List<Cat> cats = sess.createSQLQuery("select {cat.*} from cats cat").addEntity("cat", ...

    hibernate自定义查询

    Hibernate支持使用`createSQLQuery`方法创建SQL查询,并返回结果集。例如: ```java Session session = sessionFactory.openSession(); SQLQuery sqlQuery = session.createSQLQuery("SELECT * FROM USER WHERE ...

    hibernateHQL关联查询

    Hibernate HQL关联查询遵循了SQL中连接查询的概念,但在语法上有所区别,使其更符合面向对象编程的习惯。Hibernate支持以下几种连接查询方式: 1. **内连接(Inner Join)**:`INNER JOIN` 或 `JOIN` ```java ...

    Hibernate的高级查询

    HQL是Hibernate的SQL方言,它是面向对象的查询语言,允许我们用类和对象的名字而不是表和列来写查询语句。HQL支持各种复杂的查询,如连接查询、分组查询、子查询等。例如,我们可以用以下HQL语句查询所有未删除的...

    hibernate 模糊查询 分页

    Hibernate是一个开源的JPA(Java Persistence API)实现,它允许开发者使用面向对象的方式来操作数据库,而无需编写大量的SQL代码。通过ORM映射,Java对象可以直接与数据库表进行对应,这大大提高了开发效率和代码的...

    hibernate 的createSQLQuery的几种用法

    在连接了多个表的查询中,可能出现同样名字的字段,这时我们可以使用占位符来避免字段名重复的问题,例如: ```java List cats = sess.createSQLQuery("select {cat.*} from cats cat").addEntity("cat", Cat.class)...

    Hibernate进行数据查询

    本篇将详细阐述如何使用Hibernate进行数据查询,包括基本数据查询、HQL(Hibernate Query Language)以及查询条件的设定。 1. **基本查询** Hibernate提供了一个简单易用的API来进行数据查询。主要通过`Session`...

    Hibernate三大类查询总结.doc

    其次,HQL是Hibernate特有的SQL方言,它允许开发者使用面向对象的方式来编写查询语句。HQL与SQL类似,但操作的对象是类和对象的属性,而不是表和列。例如,查询所有名字以"Fritz"开头的猫的HQL语句为:`SELECT c ...

    hibernate查询语句--HQL

    在 Hibernate 中,执行查询操作的主要方式之一是使用 Hibernate 查询语言(HQL)。 HQL 是一种面向对象的查询语言,它支持标准 SQL 的大部分功能,并添加了一些额外的功能,如对象导航、集合投影等。本文将深入探讨...

    Hibernate三大类查询总结

    此外,Hibernate允许我们直接使用SQL表达式,如通过`Restrictions.sql()`方法实现,但需要注意的是,`{alias}`需要替换为查询实体的列别名。 ```java List<Cat> cats = sess.createCriteria(Cat.class) .add...

    hibernate查询详细代码讲解

    本节我们将深入探讨Hibernate中的HQL(Hibernate Query Language)查询,这是一种专为Hibernate设计的面向对象的查询语言,类似于SQL但更贴近于Java程序员的思维。 首先,HQL查询的基本语法结构与SQL类似,但对象化...

    hibernate查询语言--HQL

    HQL(Hibernate Query Language)是Hibernate框架提供的一种面向对象的查询语言,它是对SQL的封装,使得开发者可以使用面向对象的方式来处理数据库查询,避免了直接操作SQL带来的复杂性和对象与关系之间的转换问题。...

    myEclipse使用hibernate图解

    ### myEclipse 使用 Hibernate 图解知识点详解 #### 一、集成 Hibernate 类库到 MyEclipse 项目 在 MyEclipse 中使用 Hibernate 开发时,首先需要将 Hibernate 的类库加入到项目中。具体步骤如下: 1. **添加 ...

    Hibernate-Criteria 模糊查询

    `Criteria`是Hibernate提供的一个用于执行查询的标准API,它基于对象模型而不是SQL语句来构建查询,这使得开发人员能够以面向对象的方式进行数据库操作,避免了直接编写SQL带来的复杂性和潜在错误。通过`Criteria`,...

    Hibernate hql查询

    本地查询是在Hibernate配置文件中预先定义的HQL或Criteria查询,然后在代码中通过名字引用它们。这种方式提高了代码的可读性和复用性。 **9. 性能优化** 在处理大量数据时,考虑使用分页查询以提高性能: ```java...

Global site tag (gtag.js) - Google Analytics