Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Hibernate HQL查询中使用PostgreSQL xmlexists()函数?_Postgresql_Hibernate_Hql - Fatal编程技术网

如何在Hibernate HQL查询中使用PostgreSQL xmlexists()函数?

如何在Hibernate HQL查询中使用PostgreSQL xmlexists()函数?,postgresql,hibernate,hql,Postgresql,Hibernate,Hql,我想使用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);

我想使用
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行:意外令牌:正在传递


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

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

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

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