HQL BNF指南

我们在写NHibernate的HQL语句

下面是这方面的指南

HQL BNF

Outdated Hibernate 2.x docume

 

Here is a partial BNF for the Hibernate2 Query Language (this is meant more for the purposes of documentation than as a grammer for a parser compiler).


 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: '/';

摘自http://www.hibernate.org/Documentation/HQLBNF

ntation, see the Hibernate 3.x reference documentation!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值