我有一个本机SQL查询,如下所示:
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的解释:DOAATLTC\",
,:ltc\",
,:ltchnom\",
作为参数,并希望我们给值query.setString("DOAATLTC\",", ...)
,query.setString("ltc\",", ...)
,query.setString("ltchnom\",", ...)
但是我不想让Hibernate这样解释,所以我想逃避冒号:
。
怎么做 ?
在Hibernate中,转义以开头\
。但是在Java中,您还必须逃脱\
另一个\
。因此,所有内容都:
需要替换为\\:
。最后,您得到:
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 ...");
问题内容: 出现错误: 如何在HQL中使用此语法? 基本上问题是我想在查询中使用冒号(:),但是当hibernate看到冒号时,它认为这是一个参数(:parameterName是HQL中参数的语法),正如您从我的2个uses中可以看到的()。 但是,当我使用now():: date语句时,它是特定的postgreSQL语法,因此hibernate会破坏所有内容。 问题答案: 由于您使用的是Post
问题内容: 查询中给定的(下划线)不适用。 例子 : 这匹配并带来了许多行,其中包含 可能有人请帮助如何在实现这一目标以及在?谢谢。 问题答案: 您是否尝试过转义: 而不只是。
问题内容: 我正在使用CodeIgniter将一些数据插入MySQL表中。因为我正在使用并且不想编辑活动记录类以启用此功能,所以我正在手动生成SQL查询。 问题: 当字符串中包含单引号时,查询失败。如何使这些需要转义的字符自动转义,例如使用活动记录时? 问题答案: 另一种方法是使用查询绑定,该绑定会自动转义所有值:
问题内容: 查询中给出的(下划线)不适用。 范例: 这匹配并带来许多行,除了包含 可能有人请帮助如何在实现这一目标以及在?谢谢。 问题答案: 您是否尝试过转义: 而不只是。
我们有一个有状态的服务。大多数数据操作都是原子操作,但在一组特定的函数中,我们希望在一个事务中运行多个本机查询。 我们向EntityManager注入了事务范围的持久性上下文。创建正常实体的“束”时,使用em.persist()一切正常。 但是当使用本机查询时(某些表不由任何表示)Hibernate不会在同一个事务中运行它们,但基本上每个查询使用一个事务。 因此,我已经尝试使用手动启动事务 和提交
我想在我的repo中写一个本机查询“Select*in from table”。表名与实体名不同。 运行查询时, 1如果我把实体名称返回表未找到。 2如果我将表名放在查询中,则查询的验证失败。 问题是 如果我使用"Select*from TariffPacks r2..., nativeQuery=true",我得到错误TariffPacks不存在。如果我使用"Select*from RECHAR