文章只是简短的记录一下这个问题,其实早两年就发现了,但是没有刻意去记录,导致在同一个地方跌倒两次,耻辱啊...
问题描述:
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了,各位可以去测试,本人已测试通过的。
相关推荐
使用本地sql语句查询后,无需再使用Object对查询结果进行强制转换,而是直接将查询结果放到实体Bean里了。 PS: 其实只有一版,这里只所以叫最终版是因为该附件我上传了好几天传不上去,到最后报告说‘资源已经存在...
hibernate.session_factory_name 参数用于 SessionFactory 创建后,将自动使用这个名字绑定到 JNDI 中。其取值为 jndi/composite/name。 7. hibernate.max_fetch_depth hibernate.max_fetch_depth 参数用于设置...
当查询涉及到多张表时,可能存在同名字段,这可能导致字段映射错误。为了避免这种问题,可以使用别名。例如: ```java List<Cat> cats = sess.createSQLQuery("select {cat.*} from cats cat").addEntity("cat", ...
Hibernate支持使用`createSQLQuery`方法创建SQL查询,并返回结果集。例如: ```java Session session = sessionFactory.openSession(); SQLQuery sqlQuery = session.createSQLQuery("SELECT * FROM USER WHERE ...
Hibernate HQL关联查询遵循了SQL中连接查询的概念,但在语法上有所区别,使其更符合面向对象编程的习惯。Hibernate支持以下几种连接查询方式: 1. **内连接(Inner Join)**:`INNER JOIN` 或 `JOIN` ```java ...
HQL是Hibernate的SQL方言,它是面向对象的查询语言,允许我们用类和对象的名字而不是表和列来写查询语句。HQL支持各种复杂的查询,如连接查询、分组查询、子查询等。例如,我们可以用以下HQL语句查询所有未删除的...
Hibernate是一个开源的JPA(Java Persistence API)实现,它允许开发者使用面向对象的方式来操作数据库,而无需编写大量的SQL代码。通过ORM映射,Java对象可以直接与数据库表进行对应,这大大提高了开发效率和代码的...
在连接了多个表的查询中,可能出现同样名字的字段,这时我们可以使用占位符来避免字段名重复的问题,例如: ```java List cats = sess.createSQLQuery("select {cat.*} from cats cat").addEntity("cat", Cat.class)...
本篇将详细阐述如何使用Hibernate进行数据查询,包括基本数据查询、HQL(Hibernate Query Language)以及查询条件的设定。 1. **基本查询** Hibernate提供了一个简单易用的API来进行数据查询。主要通过`Session`...
其次,HQL是Hibernate特有的SQL方言,它允许开发者使用面向对象的方式来编写查询语句。HQL与SQL类似,但操作的对象是类和对象的属性,而不是表和列。例如,查询所有名字以"Fritz"开头的猫的HQL语句为:`SELECT c ...
在 Hibernate 中,执行查询操作的主要方式之一是使用 Hibernate 查询语言(HQL)。 HQL 是一种面向对象的查询语言,它支持标准 SQL 的大部分功能,并添加了一些额外的功能,如对象导航、集合投影等。本文将深入探讨...
此外,Hibernate允许我们直接使用SQL表达式,如通过`Restrictions.sql()`方法实现,但需要注意的是,`{alias}`需要替换为查询实体的列别名。 ```java List<Cat> cats = sess.createCriteria(Cat.class) .add...
本节我们将深入探讨Hibernate中的HQL(Hibernate Query Language)查询,这是一种专为Hibernate设计的面向对象的查询语言,类似于SQL但更贴近于Java程序员的思维。 首先,HQL查询的基本语法结构与SQL类似,但对象化...
HQL(Hibernate Query Language)是Hibernate框架提供的一种面向对象的查询语言,它是对SQL的封装,使得开发者可以使用面向对象的方式来处理数据库查询,避免了直接操作SQL带来的复杂性和对象与关系之间的转换问题。...
### myEclipse 使用 Hibernate 图解知识点详解 #### 一、集成 Hibernate 类库到 MyEclipse 项目 在 MyEclipse 中使用 Hibernate 开发时,首先需要将 Hibernate 的类库加入到项目中。具体步骤如下: 1. **添加 ...
`Criteria`是Hibernate提供的一个用于执行查询的标准API,它基于对象模型而不是SQL语句来构建查询,这使得开发人员能够以面向对象的方式进行数据库操作,避免了直接编写SQL带来的复杂性和潜在错误。通过`Criteria`,...
本地查询是在Hibernate配置文件中预先定义的HQL或Criteria查询,然后在代码中通过名字引用它们。这种方式提高了代码的可读性和复用性。 **9. 性能优化** 在处理大量数据时,考虑使用分页查询以提高性能: ```java...