在PostgreSQL的where子句中使用XML列
问题描述:
我想支持某些DB的hibernate
中包含XML内容的列的where子句。我通过扩展org.hibernate.dialect.OraclexDialect
类并通过registerFunction
方法注册xml函数来实现Oracle
。生成的查询的示例:在PostgreSQL的where子句中使用XML列
SELECT *
FROM OM_PERSON this_
WHERE xmltype.createxml(this_.config_xml).existsNode('/*[condition/text()="19943"]')=1;
其在hibernate
注册(对于Oracle
)函数:
xmltype.createxml(?1).existsNode(?2)
现在我想支持PostgreSQL
(优选版本:9.6)过了,我找不到任何等效的功能。所以我的问题是在PostgreSQL
上面的查询Oracle
有没有等价的函数/语句?
答
PostgreSQL有一个功能XMLEXISTS
,所以你的查询可以是这样的:
SELECT *
FROM OM_PERSON x
WHERE XMLEXISTS('/*[condition/text()="19943"]' PASSING x.config_xml)
我没有想法,如何能在Hibernate中使用。