更新和替换部分或带有参数

问题描述

全部>

在这里一个命名查询来更新和替换记录。

@NamedQuery(name = POST.UPDATE_POST_MESSAGE,query = "UPDATE Post p SET p.message = REPLACE(p.message,:value,'ANONYMOUS')"

我想要参数化“旧字符串”,但它显示一个错误

Caused by: java.lang.IllegalArgumentException: 您尝试使用查询字符串中不存在的值名称设置参数值 UPDATE Post p SET p.message = REPLACE(p.message,“匿名”)。

这是我的 dao 层中的代码

private static final String VALUE = "value";

public void updateMessage(String value) {
  EntityManager entityManager = createEntityManager();

  entityManager.createNamedQuery(POST.UPDATE_POST_MESSAGE)
     .setParameter(VALUE,value)
     .executeUpdate();
}

我不确定我们是否可以在替换函数中使用参数,到处搜索,但找不到答案。 如果不可能,有人可以帮助/推荐一种使用参数替换记录的方法

解决方法

这里您将参数值分配给了 VALUE 变量,但使用了值((小写)。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...