@NamedQuery : FROM 子句中未定义标识变量“sysdate”

Posted

技术标签:

【中文标题】@NamedQuery : FROM 子句中未定义标识变量“sysdate”【英文标题】:@NamedQuery : identification variable 'sysdate' is not defined in the FROM clause 【发布时间】:2020-05-27 15:19:10 【问题描述】:

我试图寻找它,但无法解决。需要你的想法

我正在使用这个 NamedQuery 从数据库中获取结果。

@NamedQuery(name= "Person.FindByCodeAndFiscalYear", 
            query="select o from Person o where o.fiscalYear=:pfiscalYear and o.Code=:pCode and (o.desactivatedDate is null or o.desactivatedDate > sysdate)")

我希望列 deactivateDate 为 null 或 sysdate

编译代码时出错:

Caused By: Exception [EclipseLink-0] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.JPQLException
Exception Description: Problem compiling [select o from Person o where o.fiscalYear=:pfiscalYear and o.Code=:pCode and (o.desactivatedDate is null or o.desactivatedDate > sysdate)]. 
[144, 151] The identification variable 'sysdate' cannot be used in conjunction with the > operator.
[144, 151] The identification variable 'sysdate' is not defined in the FROM clause.
    at org.eclipse.persistence.internal.jpa.jpql.HermesParser.buildException(HermesParser.java:155)
    at org.eclipse.persistence.internal.jpa.jpql.HermesParser.validate(HermesParser.java:347)
    at org.eclipse.persistence.internal.jpa.jpql.HermesParser.populateQueryImp(HermesParser.java:278)
    at org.eclipse.persistence.internal.jpa.jpql.HermesParser.buildQuery(HermesParser.java:163)
    at org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:142)
    at org.eclipse.persistence.internal.jpa.JPAQuery.processJPQLQuery(JPAQuery.java:221)
    at org.eclipse.persistence.internal.jpa.JPAQuery.prepare(JPAQuery.java:182)
    at org.eclipse.persiste

【问题讨论】:

谢谢各位,找到答案了。我们可以使用 CURRENT_DATE 代替 sysdate 【参考方案1】:

SYSDATA 是 Oracle 特定的,而 CURRENT_DATA 是 SQL 和 JPQL 标准。

【讨论】:

以上是关于@NamedQuery : FROM 子句中未定义标识变量“sysdate”的主要内容,如果未能解决你的问题,请参考以下文章

使用 @NamedQuery 和 'SELECT OBJECt(var) FROM EntityName var 实现查询

将 IN 子句列表添加到 JPA 查询

选择 where 子句中未找到的 ID

汇总 where 子句中未选择的行

Laravel 雄辩的高级 where 子句:未定义的变量 |我使用 use()

在 UDF from 子句中使用参数