HQL BNF
query:
[selectClause] fromClause [whereClause] [groupByClause] [havingClause] [orderByClause];
selectClause:
SELECT DISTINCT? selectedPropertiesList | ( NEW className OPEN selectedPropertiesList CLOSE );;
fromClause:
FROM className AS? identifier ( ( COMMA className AS? identifier ); | ( joinType path AS? identifier ); );*;
joinType:
( ( 'left'|'right' 'outer'? ); | 'full' | 'inner' );? JOIN FETCH?;
groupByClause:
GROUP_BY path ( COMMA path );*;
orderByClause:
ORDER_BY selectedPropertiesList;
havingClause:
HAVING logicalExpression;
whereClause:
WHERE logicalExpression;
selectedPropertiesList:
( path | aggregate ); ( COMMA path | aggregate );*;
aggregate:
( aggregateFunction OPEN path CLOSE ); | ( COUNT OPEN STAR CLOSE ); | ( COUNT OPEN DISTINCT | ALL path CLOSE );;
aggregateFunction:
COUNT | 'sum' | 'avg' | 'max' | 'min';
logicalExpression: TODO!
expression: TODO!
collection: ( OPEN query CLOSE ); | ( 'elements'|'indices' OPEN path CLOSE );;
quantifiedExpression: 'exists' | ( expression 'in' ); | ( expression OP 'any' | 'some' ); collection;
compoundPath: path ( OPEN_BRACKET expression CLOSE_BRACKET ( '.' path );? );*;
path: identifier ( '.' identifier );*;
className: path;
OP: EQ | LT | GT | LE | GE | NE | SQL_NE | LIKE;
AS: 'as';
DISTINCT: 'distinct';
ALL: 'all';
COUNT: 'count';
SELECT: 'select';
FROM: 'from';
JOIN: 'join';
FETCH: 'fetch'
BY: 'by';
GROUP_BY: 'group' BY;
ORDER_BY: 'order' BY;
HAVING: 'having';
WHERE: 'where';
NEW: 'new';
LIKE: 'like';
EQ: '=';
LT: '<';
GT: '>';
SQL_NE: "<>";
NE: "!=" | "^=";
LE: "<=";
GE: ">=";
COMMA: ',';
OPEN: '(';
CLOSE: ');';
OPEN_BRACKET: '[';
CLOSE_BRACKET: ']';
CONCAT: "||";
PLUS: '+';
MINUS: '-';
STAR: '*';
DIV: '/';
分享到:
相关推荐
Hibernate框架Hql语句in中带参数的写法 Hibernate框架中,在使用HQL语句时,需要传递参数,而在HQL语句中使用in关键字时,需要特别注意参数的传递方式。在本文中,我们将讨论如何在HQL语句中使用in关键字带参数的...
### HQL的几种常见写法 #### 概述 HQL(Hibernate Query Language)是Hibernate框架提供的一种查询语言,它支持面向对象的语法结构,并且能够很好地与Java对象模型进行映射。通过HQL,开发者可以更加灵活地操作...
"Hibernate-HQL语句多对多写法" Hibernate 是一个流行的 Java 持久层框架,它提供了强大的对象关系映射(ORM)功能,使得开发者可以方便地与数据库交互。但是,在使用 Hibernate 时,我们经常会遇到多对多关系的...
### Hibernate中的NSQL与HQL增删改操作详解 #### NSQL(Native SQL)与HQL(Hibernate Query Language) 在Hibernate框架中,进行数据库操作时,开发者可以选择使用两种不同的查询语言:NSQL(Native SQL)和HQL...
- **类名简化**:通常情况下无需使用类的全限定名,因为Hibernate默认开启了自动引入功能,简化后的写法为`from Cat`。 - **指定别名**:在大多数情况下,需要为查询的目标类指定一个别名,以便在后续查询中使用。...
所以我们几乎只使用简单的写法:from Cat。 大多数情况下,你需要指定一个别名,原因是你可能需要在查询语句的其它部分引用到 Cat。例如:from Cat as cat,这个语句把别名 cat 指定给类 Cat 的实例,这样我们就...
如果我们不需要使用类的全限定名,因为 auto-import 是缺省的情况,我们可以使用简单的写法: ``` from Cat ``` 在大多数情况下,我们需要指定一个别名,例如: ``` from Cat as cat ``` 这将把别名 cat 指定给类 ...
- **简化语法**:可以简化`inner join`和`left outer join`的写法。 - 示例:`from Cat as cat join cat.mate as mate left join cat.kittens as kitten`。 - **fetch连接**:用于在一次查询中同时初始化相关联的...
内连接与外连接的精简写法,可用于sql和hql中,即使hql中两实体不存在实际上的主外键关系,也适用。
- 封装:DAO类应封装具体的SQL查询和HQL(Hibernate Query Language)语句,避免在业务层暴露这些细节。 - 单一职责:每个DAO类应只负责一种类型的数据操作,如用户DAO只处理用户相关的操作。 - 可复用:设计通用的...
Hibernate提供了查询语言HQL,以及Criteria API,使得数据库查询更为便捷。此外,它的缓存机制能提高数据访问效率。 在这个SSH项目实例中,"templet"可能包含了一系列模板文件,如Struts的配置文件(struts.xml)、...
本资源提供的是"中英文简历的写法",意在帮助求职者打造专业且具有吸引力的简历。 首先,我们需要了解简历的基本构成。一份好的简历通常包含以下几个部分:个人信息、求职意向、教育背景、工作经验、项目经历、技能...
本文将深入探讨Hibernate的配置文件和类映射文件的常用写法,帮助开发者更好地理解和应用Hibernate。 首先,我们来看`Hibernate.cfg.xml`配置文件,它是Hibernate应用的核心配置,包含了数据库连接、方言、自动建表...
一、HQL(Hive Query Language)写法 在HQL中,通常我们用`COUNT(DISTINCT column)`来计算UV,但这种方法在数据量大时可能会影响性能。为了优化,可以采用以下方式: ```sql -- 计算UV SELECT tmp.shop, COUNT(1) ...
6. **查询语言(HQL)**: Hibernate 查询语言(HQL)是 Hibernate 提供的面向对象的查询语言,类似于 SQL,但操作对象而非表。 **二、Hibernate 工作流程** 1. **初始化 Hibernate**: 加载配置文件,创建 ...
Hive优化总结是Hive性能优化的总结,涉及HIVE的参数设置、HQL语言的写法、JOIN操作的优化、MapReduce操作的优化、列裁剪、分区裁剪等多个方面。 1. 配置文件优化 Hive的配置文件hive-site.xml是Hive的核心配置文件...
3. **Hibernate**:是ORM(对象关系映射)框架,它将Java对象与数据库表对应,通过编写HQL(Hibernate Query Language)或使用Criteria API来操作数据库,简化了数据库操作。 **Ajax实现Google自动搜索** Ajax...
// 一种更简洁的写法 List result = session.createCriteria(Customer.class) .add(Expression.like("name", "T%")) .add(Expression.eq("age", new Integer(21))) .list(); ``` 这里,我们合并了条件设置和执行...
使用JDBC时,可以结合LIMIT和OFFSET子句(Oracle不支持LIMIT,但可以通过ROWNUM模拟)来实现分页,而在Hibernate中,可以使用Criteria API或HQL的`setFirstResult`和`setMaxResults`方法来实现相同的功能。...
3.2 type映射类型的两种写法 - XML配置:在映射文件中定义类型转换。 - 注解配置:直接在实体类的属性上使用注解@Type声明类型。 四、Hibernate主键生成方式 4.1 五种生成方式 1. assigned:由开发者手动指定主...