How to escape colon `:` within a native SQL query in Hibernate?
In Hibernate, escaping is done with prepending by \
. But in Java, you also have to escape \
by another \
. So every :
needs to be replaced by \\:
. Finally, you get:
Query query = session.createSQLQuery("SELECT
XMLSERIALIZE
(CONTENT
XMLELEMENT
(
NAME \"ltc\\:DOAATLTC\",
XMLATTRIBUTES
(
'http://www.edftrading.com/Trade/Common/DoaatLTC' AS \"xmlns\\:ltc\",
'http://www.edftrading.com/Trade/Common/DoaatLTCHourlyNomination' AS \"xmlns\\:ltchnom\"
),
XMLELEMENT ( ... ) FROM ...");
If your colon is a cast like SELECT reltuples::BIGINT
then you can rewrite it as a cast(reltuples as BIGINT)
to avoid the colons.
ref