当前位置: 首页 > 知识库问答 >
问题:

如何在hibernate createSqlQuery中转义“--”?

郁灿
2023-03-14

代码如下:

java prettyprint-override">sql = " select '--', staff_no from staff where staff_no = ?";
Session session2 = HibernateUtil.getCurrentSession();               
Query sqlQuery2 = session2.createSQLQuery(sql);             
sqlQuery2.setParameter(0, "04415");  //error in this line

运行时,会出现错误

原因:org。冬眠QueryParameterException:位置超出已声明序数参数的数量。请记住,序数参数是基于1的!职位:1

被抛出,我知道这是由sql字符串中的'--'引起的,hibernate将其解释为sql注释,

我试着用

"select '\\-\\-', staff_no from ...."

这可以成功运行,但是输出变成\-\-,但是我想要的是——在输出中。

那么如何在hibernatecreateSqlQuery中转义--?

如果我运行select子句,则问题是由select子句中的“---”引起的

sql = " select '-', staff_no from staff where staff_no = ?";

没有发现问题。

共有2个答案

别兴国
2023-03-14

找不到任何方法,但请使用如下解决方法

sql = " select replace ('- -', ' ', ''), staff_no from staff where staff_no = ?";
Session session2 = HibernateUtil.getCurrentSession();               
Query sqlQuery2 = session2.createSQLQuery(sql);             
sqlQuery2.setParameter(0, "04415"); 
欧阳博超
2023-03-14

正如您的错误消息所述:

请记住,序数参数是基于1的!职位:1

尝试使用以下方法:

sql = " select \"--\", staff_no from staff where staff_no = ?1";
Session session2 = HibernateUtil.getCurrentSession();               
Query sqlQuery2 = session2.createSQLQuery(sql);             
sqlQuery2.setParameter(1, "04415"); 

根据文件:

JPQL风格的位置参数使用问号声明,后跟序号-?1?2.序数以1开头。与命名参数一样,位置参数也可以在查询中出现多次。

 类似资料:
  • 问题内容: 我正在尝试下面的代码,但出现错误 错误 我想要结果 问题答案: 请改用,它不使用正则表达式,因为您根本不需要它们: 这将按预期打印。

  • 问题内容: 我正在用XML编写一些SpEL语句,但无法让解析器确定何时需要转义字符。 我尝试了以下操作: 但是,添加\似乎并不能避免使用单引号,并且我一直收到解析器异常。 有什么办法可以逃避这些价值观? 问题答案: 从文档中: “要将单引号本身放在字符串中,请使用两个单引号字符。”

  • 问题内容: 我对此一无所知,我试图在JSP中转义一个引号。我有一些数据直接输出到JS字符串中,单引号似乎引起了问题。 这是我的代码: 这是我得到的输出: 但这是错误的,我只需要或根本不需要单引号! 编辑 :还是我实际上需要用反斜杠转义引号? 问题答案: 正斜杠不是转义字符。那是反斜杠。 (是的,它已经被介绍过两次了,因为这 也是 Java中的转义字符!) 但是,你不要只需要repace的,你还需要

  • 我有#symbol要作为参数在URL中传递。但它丢弃了#之后的所有参数值。请给我建议解决办法。下面是我的url 提前致谢

  • 问题内容: 如何在javadoc中转义符号?我正在尝试在标签内使用它。 我已经尝试了html转义序列,但是没有用。 问题答案: 使用javadoc标记: 为此的javadoc将显示为: 当然,这适用于 任何 字符,并且是显示任何“特殊”字符的“官方支持”方式。 这也是最简单明了-你不需要知道字符的十六进制代码, 并且 可以读取你输入什么!

  • 问题内容: 我坚持这样: 我有一个写在HTML报告。的是 但是该链接不起作用,因为“ Evidencia”未包含在引号中,如何将引号放在参数中? 在带来这二零一三年十月一十日09:15:00.110 问题答案: 您可以使用。在Java中,您可以使用来访问转义字符。