如何在Hibernate中的本地SQL查询中冒号`:`? [英] How to escape colon `:` within a native SQL query in Hibernate?
问题描述
查询查询= session.createSQLQuery(SELECT
XMLSERIALIZE
(内容
XMLELEMENT
(
名称\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 ...);
事情是Hibernate解释:DOAATLTC \,
,:ltc\,
,:ltchnom \,
作为参数,并期望我们给出的值 query.setString(DOAATLTC \,,。 ..)
, query.setString(ltc\,,...)
, query.setString (ltchnom \,,...)
但是我d o不希望Hibernate像这样解释,所以我想转义冒号:
。
如何做到这一点?
在Hibernate中,转义是用 \
预先完成。但在Java中,您还必须通过另一个 \
来转义 \
。所以每一个:
都需要被 \\:
取代。最后,你得到:
$ p $ 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 ...);
I have a native SQL query that looks like that :
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 thing is that Hibernate interprets :DOAATLTC\",
, :ltc\",
, :ltchnom\",
as parameters and expects that we give values query.setString("DOAATLTC\",", ...)
, query.setString("ltc\",", ...)
, query.setString("ltchnom\",", ...)
But I do not want Hibernate to interpret like that, so I want to escape the colon :
.
How to do that ?
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 ...");
这篇关于如何在Hibernate中的本地SQL查询中冒号`:`?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!