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

时间:2021-06-07 06:36:57

标签: java sql spring-boot spring-data named-query

全部>

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

@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();
}

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

1 个答案:

答案 0 :(得分:0)

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