2017-11-18 187 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中使用。