【问题标题】:How to use PostgreSQL xmlexists() function in Hibernate HQL query?如何在 Hibernate HQL 查询中使用 PostgreSQL xmlexists() 函数?
【发布时间】:2020-02-22 23:40:19
【问题描述】:

我想使用 xmlexists() 函数创建 HQL 查询,但出现错误。

我的代码:

Query query = session.createQuery("From XMLTable AS tb WHERE xmlexists('//food[@id = \"1\"]' PASSING BY REF tb.xmlData)");

List list = query.list();

list.forEach(obj -> {
        printSth((XMLTable) obj);
});

错误:

错误:第 1:77 行:意外令牌:PASSING

我也在 pgAdmin 4 中尝试过,一切正常。我猜这是 HQL 中的语法问题。

【问题讨论】:

    标签: postgresql hibernate hql


    【解决方案1】:

    问题似乎与您使用的函数的非正统语法有关。

    一个明显的解决方案是使用session.createNativeQuery() 而不是JPQL 查询。然后,您可以(并且应该)使用纯 SQL 作为方法参数。

    另一个解决方案可能是扩展 Hibernate 为 PostgreSQL 提供的方言类,并为xmlexists() 注册一个新的函数实现。我不确定这是否可行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 2012-02-08
      • 1970-01-01
      • 1970-01-01
      • 2016-06-26
      • 1970-01-01
      • 2010-12-23
      相关资源
      最近更新 更多