2017-11-18 186 views
1

我想支持某些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有没有等价的函数/语句?

回答

1

PostgreSQL有一个功能XMLEXISTS,所以你的查询可以是这样的:

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

我没有想法,如何能在Hibernate中使用。