昨天在用hibernate无意中在后台发现一个很奇怪的问题,一条SQL一直在重复执行,跑了好半天也没完成:(
仔细的看了一下,原来是在查询字典表,先执行一次总的查询出id,然后分别根据id分别select,这个字典表的内容太多了,而且本身自关联的。
当然我也知道这个只是第一次加载慢,第一次加载同时会被缓存,可是这个项目刚刚开始,这个字典表的改动是很频繁的,需要根据客户的需求而经常变动,等稳定下来再该回去。
先修改为sql:
select c.categoryid as {category.Id}, c.categoryname as {category.Name}
from Tb_Article_Category c
where c.categoryparentid is null
跑了一下,没有通过:(
试着将表中所有的字段都写出来便没有错误了,不太明白为什么非要我写出所有字段,可是那并是我想要的,我也怕麻烦。
目前我的做法是直接返回object [],没有对每条记录转化为ArticleCategory对象。
没有修改之前:
修改之后:
from Tb_Article_Category c
where c.categoryparentid is null
跑了一下,没有通过:(
Hibernate: select c.categoryId as categoryId0_0_,c.categoryName as category2_0_0_
from tb_article_category c where c.categoryParentId is null
[ 2006 - 03 - 20 09 : 12 : 38 , 812 ] - ERROR (JDBCExceptionReporter.java: 72 ) | Column ' category3_0_0_ ' not found.
from tb_article_category c where c.categoryParentId is null
[ 2006 - 03 - 20 09 : 12 : 38 , 812 ] - ERROR (JDBCExceptionReporter.java: 72 ) | Column ' category3_0_0_ ' not found.
试着将表中所有的字段都写出来便没有错误了,不太明白为什么非要我写出所有字段,可是那并是我想要的,我也怕麻烦。
目前我的做法是直接返回object [],没有对每条记录转化为ArticleCategory对象。
select
c.categoryId,c.categoryName
from
tb_article_category c
where
c.categoryParentId
is
null
for
(Object obj : list)
{
Object [] str = (Object[]) obj;
System.out.println(String.valueOf(str[ 1 ]));
}
Object [] str = (Object[]) obj;
System.out.println(String.valueOf(str[ 1 ]));
}
没有修改之前:
修改之后:
相关推荐
Hibernate Query Language(HQL)是Hibernate框架中用于操作对象关系映射(ORM)的一种查询语言。它是面向对象的,设计目的是让开发人员可以使用对象而不是数据库表进行查询,从而简化了与数据库交互的过程。HQL的...
标题:Hibernate Query Language 描述:Hibernate Query Language培训教材 知识点详解: ### 1. Hibernate Query Language(HQL)概述 Hibernate Query Language,简称HQL,是Hibernate框架中用于执行数据库查询...
# Hibernate Query Language (HQL): An Object-Oriented Variant of SQL ## 一、引言 Hibernate 是一款流行的 Java 持久层框架,它极大地简化了对象与关系数据库之间的映射过程。Hibernate Query Language(简称 ...
1. **HQL(Hibernate Query Language)** HQL是Hibernate提供的面向对象的查询语言,类似于SQL,但操作的对象是对象而非表。例如,要获取所有用户,可以使用以下HQL语句: ```java Query query = session....
在Hibernate中,HQL(Hibernate Query Language)是专为ORM设计的一种面向对象的查询语言,它允许开发者以类和对象的方式进行数据查询,而不是直接使用SQL。本资料主要涵盖了Hibernate HQL查询的基本概念、语法以及...
在Java的持久化框架Hibernate中,SQLQuery是用于执行自定义SQL语句的重要工具,它允许开发者绕过ORM(对象关系映射)的抽象层,直接与数据库进行交互。这篇博客"Hibernate SQLQuery 本地查询"可能详细讲解了如何利用...
本篇文章将深入探讨如何使用Hibernate的Query接口来调用Oracle的存储过程和函数,以及提供相关的示例代码和数据库文件。 首先,让我们了解什么是存储过程和函数。存储过程是预编译的SQL语句集合,可以接受参数、...
本文将探讨Hibernate中两种主要的分页方式:`query.scroll()`和使用`query.setFirstResult(), query.setMaxResults()`。 首先,`query.scroll()`方法基于JDBC 2.0的可滚动结果集实现。这种方式允许应用程序在结果...
首先,让我们了解一下Hibernate中的HQL(Hibernate Query Language),它是Hibernate提供的面向对象的查询语言,类似于SQL,但更贴近于Java。在HQL中,我们可以方便地使用聚合函数进行数据处理。例如,如果你想要...
在执行查询时,Hibernate提供了Query和Criteria API来实现这一目标。 1. **使用HQL(Hibernate Query Language)** HQL是Hibernate特有的查询语言,类似于SQL,但更面向对象。查询所有数据的HQL语句如下: ```...
8. **查询**: Hibernate支持HQL(Hibernate Query Language)和 Criteria API,它们提供了面向对象的查询方式。另外,还可以使用原生的SQL查询并通过`@NamedNativeQuery`进行配置。 在这个"Spring4Hibernate5MVC...
Hibernate提供了一种灵活的查询语言——HQL(Hibernate Query Language),以及 Criteria 查询和 Criteria API,它们都可以用来获取数据表中的特定字段。 二、Hibernate配置 在使用Hibernate进行查询前,首先需要...
6. **Criteria查询**:除了HQL(Hibernate Query Language)外,Hibernate还提供了Criteria API,一种类型安全的动态查询方式,可以根据条件构造查询。 7. **第二级缓存**:Hibernate支持二级缓存,通过插件如...
在这个“hibernate 实践 - Query详解”的主题中,我们将深入理解如何使用Query接口来执行SQL查询,并绑定参数。 1. **Query接口** Query接口是Hibernate提供的一种用于执行HQL(Hibernate查询语言)或SQL查询的API...
**Hibernate Query Language(HQL)基础认识** Hibernate Query Language(HQL)是Hibernate框架中用于操作对象关系映射(ORM)的一种查询语言。它类似于SQL,但专为面向对象编程设计,使得开发者能够以类和对象的...
SQLib是一个针对Java开发者的库,它提供了一个更为简洁且可定制化的实现,用于替代标准的JPA Criteria Builder和Hibernate Query Builder。这个库的主要目标是简化数据库查询的构建过程,同时保持灵活性,允许开发者...
Hibernate Query API之上的JDK 8包装器 特征 检索可选查询结果 查询到流的转换 输入查询 当前兼容性: / 请参阅总结了引入的更改的文档 设置 为了开始和运行,只需将工件添加到您的Maven / Gradle构建中。 ...
Hibernate3引入了许多增强功能,如Criteria查询、HQL(Hibernate Query Language)以及对JPA(Java Persistence API)的支持,提供了更丰富的查询方式和更高的灵活性。 hibernate3.jar是主要的Hibernate库文件,...
Query API允许用户用HQL(Hibernate Query Language)编写查询,而Criteria API则提供了一种更面向对象的查询方式。 4. **Transaction管理**:Hibernate支持JTA(Java Transaction API)和JDBC事务,确保数据操作的...
3. **HQL(Hibernate Query Language)**: HQL是Hibernate提供的面向对象的查询语言,类似于SQL,但操作的是对象而不是表。例如,`from+对象名`的查询语句可以获取所有对象实例。HQL语句中的类名应与JavaBean的...