java - 更新时 hibernate 错误

标签 java sql oracle hibernate

<分区>

Possible Duplicate:
Using Hibernate query : colon gets treated as parameter / escaping colon

我们正在尝试编写原生查询。当我们尝试更新包含 ": " 的特定列值时,我们得到一个异常。

这是生成的查询

  UPDATE MY_TABLE SET DESCRIPTION = "Test 01 : ABC",LAST_UPDATE_TS =
  CURRENT_TIMESTAMP ,LAST_UPDATE_USER_ID = 111 WHERE MY_ID =123 

我认为问题出在 DESCRIPTION 数据上,其中包含 ': '

我们得到这个错误

 nested exception is org.hibernate.QueryException:Space is not allowed after 
 parameter prefix ':' ' UPDATE 
 MY_TABLE SET DESCRIPTION = "MY Test 01 : ABC",LAST_UPDATE_TS =
 CURRENT_TIMESTAMP, LAST_UPDATE_USER_ID = 111 WHERE MY_ID =123'

这是负责查询的 Java 代码:

 StringBuffer strQry = new StringBuffer(" UPDATE MY_TABLE SET ");

          if(myForm.getDescription() != null){
                 if(flag == 1){
                       strQry.append(",");
                 }
                 strQry.append(" DESCRIPTION = \"" + myForm.getDescription().trim()+ "\" ");
                 flag = 1;

知道为什么会发生此错误以及我们如何解决它吗?

最佳答案

UPDATE MY_TABLE SET DESCRIPTION = "Test 01 \\: ABC",LAST_UPDATE_TS =
  CURRENT_TIMESTAMP ,LAST_UPDATE_USER_ID = 111 WHERE MY_ID =123

添加正斜杠。

冒号用于指定命名参数,因此您必须对其进行转义(然后转义转义)。

关于java - 更新时 hibernate 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13332661/

相关文章:

java - 带有 lambda 表达式的 PROLOG

java - 将一年中的某一天转换为 Java 中的日期

sql - 向密集秩函数添加条件子句(Where)

php - MySQL 查询在 PHPMyAdmin 中成功,但在 PHP 脚本本身中失败

sql - 仅当 NOT NULL 时加入列

java - 服务器启动错误 - SQL 语法错误

java - Android:旋转时崩溃,从水平到垂直

sql - 在一个 SQL 查询中加入两个 COUNT()

Oracle 调整/分析表

c# - 尝试从 visual c# 程序更新 oracle 时出现 "Invalid Operation. The Connection is closed"错误