HQL中双连字符(--)的定义、用法及注释兼容性问题咨询
HQL中的单行注释支持情况解析
嘿,这个问题我碰到过好多次了,咱们把它掰扯明白:
首先明确说:HQL是支持--(双连字符)开头的单行注释的,你在编辑器里看到--后的内容变色,其实就是编辑器正确识别了HQL的注释语法,这是没问题的。
那为什么有些资料说HQL不支持注释呢?大概率是指比较早期的Hibernate版本,或者混淆了MySQL的#注释——要注意,HQL并不支持MySQL风格的#单行注释,只认--开头的单行注释。
举个实际的例子,你写的这段代码:
-- fetch students for marks entry select s, classHis.classes.id, cd.academicYear from Student s join s.studentPreviousClassesHistory classHis join classHis.classes.classSchemewises classSchemewise
HQL解析器会完全忽略第一行-- fetch students for marks entry的内容,只执行后面的查询语句,完全没问题。
另外补充一下,HQL还支持标准的多行注释/* ... */,比如:
/* 这是一段多行注释 用来解释下面的查询逻辑 */ select s.name from Student s where s.age > 18
总结一下:
- HQL支持
--单行注释(行内或行首都可以) - HQL不支持
#开头的单行注释 - HQL支持
/* ... */多行注释
内容的提问来源于stack exchange,提问作者Arun Sudhakaran
相关产品推荐
相关产品推荐

