JPQL 意外 AST 节点:围绕“coalesce”

Posted

技术标签:

【中文标题】JPQL 意外 AST 节点:围绕“coalesce”【英文标题】:JPQL unexpected AST node: around "coalesce" 【发布时间】:2020-05-02 16:19:13 【问题描述】:

JPQL 出错:抛出 org.springframework.dao.InvalidDataAccessApiUsageException (org.hibernate.hql.internal.ast.QuerySyntaxException:意外的 AST 节点:(靠近第 3 行,第 48 列)从 InvoiceBE 中选择 invoiceBE invoiceBE 其中 invoiceBE.institutionId = ?1 和 合并(invoiceBE.paidActivity.date

“coalesce”有什么错误吗?

我在mysql数据库中运行sql很好。

select
        *    from
        ACQ_INVOICE invoice 
    where
        invoice.institution_id=91475
        and coalesce(invoice.`user_paid_date` < '2020-01-20', invoice.`paid_date` < '2020-01-20T16:45:40.786Z')

谢谢。

【问题讨论】:

【参考方案1】:

合并表达式看起来完全错误。

我不认为引用属性的回勾是允许的。这看起来更像 MySQL SQL 语法。

我也不完全确定 COALESCE 是否可以与布尔表达式一起使用。

【讨论】:

【参考方案2】:

改为

合并(invoice.user_paid_date, invoice.paid_date)

它奏效了。

【讨论】:

以上是关于JPQL 意外 AST 节点:围绕“coalesce”的主要内容,如果未能解决你的问题,请参考以下文章

HQL 意外 AST 节点:vector

由于意外的 AST 节点,使用 JPA TREAT 的命名查询无法正常工作

JPQL 构造函数表达式 - org.hibernate.hql.ast.QuerySyntaxException:表未映射

意外令牌:使用休眠、JPQL 和 postgres 函数时出现“<function_name>”错误

org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌:FETCH

在 WHERE 中使用“CASE WHEN”语句进行查询会导致 QuerySyntaxException:意外 AST