How to avoid the colon `:` inside a native SQL query in Hibernate?

I have my own SQL query that looks like this:

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 ...");

The fact that Hibernate interprets :DOAATLTC\",, :ltc\",, :ltchnom\",as parameters and expects us to give value query.setString("DOAATLTC\",", ...), query.setString("ltc\",", ...),query.setString("ltchnom\",", ...)

But I do not want Hibernate to be interpreted like this, so I want to avoid the colon :.

How to do it?

+4
source share
1 answer

In Hibernate, acceleration is performed with the addition \. But in Java, you should also avoid \others \. Therefore, each :should 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 ...");
+8

All Articles