全部>
我在这里有一个命名查询来更新和替换记录。
@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, :value, “匿名”)。
这是我的 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();
}
我不确定我们是否可以在替换函数中使用参数,到处搜索,但找不到答案。 如果不可能,有人可以帮助/推荐一种使用参数替换记录的方法。
答案 0 :(得分:0)
这里您将参数值分配给了 VALUE 变量,但使用了值((小写)。