当前位置: 首页 > 面试题库 >

如何在Hibernate的本机SQL查询中转义冒号`:`?

王季萌
2023-03-14
问题内容

我有一个本机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