Java hibernate中的逃逸括号

Java hibernate中的逃逸括号,java,hibernate,Java,Hibernate,在这种情况下,我获取一个文件,并执行适当的Java转义,用两个单引号替换所有单引号 String fileContent = StringEscapeUtils.escapeJava(fileContent).replace("'","''"); 然后,将一条SQL语句放在一起并传递给以后执行executeUpdate() 我的问题是,文件最终包含一个卷曲的开始大括号,而没有结束大括号,hibernate对此不太满意。我得到这个错误: org.hibernate.QueryException:

在这种情况下,我获取一个文件,并执行适当的Java转义,用两个单引号替换所有单引号

String fileContent = StringEscapeUtils.escapeJava(fileContent).replace("'","''");
然后,将一条SQL语句放在一起并传递给以后执行
executeUpdate()

我的问题是,文件最终包含一个卷曲的开始大括号,而没有结束大括号,hibernate对此不太满意。我得到这个错误:

org.hibernate.QueryException: Unmatched braces for alias path
失败语句如下所示:

INSERT INTO some_table (a_column) VALUES ('bla bla {more bla bla')
不幸的是,如果不重写所有内容,就不能使用setParameter()


有什么方法可以绕过此休眠功能或转义字符吗?

为什么需要转义字符串?Hibernate会帮你的。只需
setParameter
原始字符串。您能显示有问题的SQL和相关代码吗?@Thilo setParameter不幸不是一个选项,因为它涉及重写大量代码。这可以是多少代码?您不必同时在任何地方执行此操作,只需针对“有问题”的查询(如您提到的查询)。但实际上,不使用绑定变量几乎是一个代码缺陷(这难道不是使用Hibernate编写查询的自然方式吗?尤其是在处理实体时)。FWIW,不能在字符串文本中使用大括号显然是Hibernate错误或JPA限制:为什么需要转义字符串?Hibernate会帮你的。只需
setParameter
原始字符串。您能显示有问题的SQL和相关代码吗?@Thilo setParameter不幸不是一个选项,因为它涉及重写大量代码。这可以是多少代码?您不必同时在任何地方执行此操作,只需针对“有问题”的查询(如您提到的查询)。但实际上,不使用绑定变量几乎是一种代码缺陷(这难道不是使用Hibernate编写查询的自然方式吗?尤其是在处理实体时)。FWIW,不能在字符串文本中使用大括号显然是Hibernate缺陷或JPA限制: