如何在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()
注册一个新的函数实现。但我不确定这是否有效