Eclipse 2018/12中的JPA验证有缺陷吗-抱怨LOWER关键字

时间:2019-03-03 07:27:36

标签: eclipse validation jpa

在最新的Eclipse版本中,JPA验证似乎有些奇怪。它抱怨以下表达式:

lower expression

错误提示:

  

IN表达式没有有效的左表达式。

我认为这是错误的。查询按预期方式工作,因此这似乎是Eclipse错误,对吗?还是您有另一个主意,为什么会发生此错误?

我不确定这个错误是来自JBoss工具还是直接来自Eclipse验证。我可以说是这个验证器:

Validator

1 个答案:

答案 0 :(得分:1)

根据定义-即the JPA specification¹文档,又名JSR 338-JPQL允许使用诸如LOWER(..)之类的功能。这些被定义为“保留的标识符”(请参阅​​第4.4.1节“标识符” ,第172页):

  

以下是保留的标识符:

     

ABS,ALL和AND,AS,ASC,AVG,之间,   BIT_LENGTH [59],BOTH,BY,CASE,CHAR_LENGTH,CHARACTER_LENGTH,CLASS,COALESCE,CONCAT,COUNT,CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP,   DELETE,DESC,DISTINCT,ELSE,EMPTY,END,ENTRY,ESCAPE,EXISTS,FALSE,FETCH,   从,功能,组,具有,在,索引,内部,是,加入,关键,领先,向左,   LENGTH,LIKE,LOCATE, LOWER ,MAX,MEMBER,MIN,MOD,NEW,NOT,NULL,NULLIF,   对象,对象,上,或,顺序,外部,位置,选择,设置,大小,一些,SQRT,SUBSTRING,SUM,然后,拖尾,处理,TRIM,TRUE,TYPE,未知,更新,UPPER,   值,时间,地点。

在第193f页的 4.6.17.2.1字符串函数部分中,对函数LOWER(string_expression)进行了更详细的描述。 JPA规范文档指出:

  

关于数据库的语言环境, LOWER 和UPPER函数分别将字符串转换为小写和大写。他们返回一个字符串。

因此,JPA查询语言的 BNF 将LOWER定义为关键字。

结论

对于您所安装的版本,Eclipse,各自的JPA查询验证器或其他工具中的错误似乎很可能。您可能会考虑检查Eclipse的错误跟踪器或升级到Eclipse 2019 +。

希望有帮助。

-

¹在2.2版或之前的2.1 / 2.0版中