我想更新用户输入的特定列的值。下面是我的代码,有谁知道如何修改它以纠正错误吗?
public void updateValue(String value, String id, String ww){
Query q = em.createQuery("Update TableA e SET e.?1 = ?2 WHERE e.num = ?3");
q.setParameter(1, ww); //since has many columns, user require to specific column to update
q.setParameter(2, value);
q.setParameter(3, id);
q.executeUpdate();
}
2条答案
按热度按时间2nc8po8w1#
如果您使用的是JPA 2.1,您应该使用条件生成器查询。下面是您应该做的事情
5n0oy7gb2#
你问的
根据 predicate 更新一列(可能还有更多高级操作)。
更多细节和干净做法
对于基于条件的操作(如更新),最佳实践是使用
javax.persistence.criteria
接口(如CriteriaUpdate),并对 predicate 使用where()
子句限制。此外,对于 predicate 和列类型,您可以使用CriteriaBuilder API进行许多操作和聚合,例如将其他列或值附加到所需的列(路径)。
注意,
some_value
甚至可以借助criteriaBuilder
使用嵌套运算和聚合进行计算,例如在您的案例中进行总结,如下所示