在PostgreSQL的where子句中使用XML列

时间:2017-11-18 09:06:28

标签: sql xml oracle postgresql hibernate

我希望为某些DB支持hibernate中包含XML内容的列的where子句。我通过扩展Oracle类并通过org.hibernate.dialect.OraclexDialect方法注册xml函数,在registerFunction中实现了这一点。生成的查询示例:

SELECT *
FROM OM_PERSON this_
WHERE xmltype.createxml(this_.config_xml).existsNode('/*[condition/text()="19943"]')=1;

hibernate(For Oracle)中注册的功能:

xmltype.createxml(?1).existsNode(?2)

现在我想支持PostgreSQL(首选版本: 9.6 ),我无法找到任何等效功能。所以我的问题是Oracle中的上述PostgreSQL查询是否有任何等效的函数/声明?

1 个答案:

答案 0 :(得分:1)

PostgreSQL有一个函数XMLEXISTS,所以你的查询看起来像:

SELECT *
   FROM OM_PERSON x
  WHERE XMLEXISTS('/*[condition/text()="19943"]' PASSING x.config_xml)

我不知道如何在Hibernate中使用它。