我想用 QueryDSL 创建这样的查询
update WorkMessage w set w.totalPrice = 0.12 - w.totalCost;
我试过这样
Expression<Float> priceExpr = Expressions.constant(0.12f);
new JPAUpdateClause(em, w)
.set(w.totalPrice , priceExpr.subtract(w.totalCost));
但这不起作用 - 表达式没有减法。
我是这样做的:
new JPAUpdateClause(em, w)
.set(w.totalPrice , w.totalCost.subtract(0.12f).negate());
但我想知道如何以第一种方式做到这一点。
//编辑
第二种方法不起作用:
JPAUpdateClause.toString 说:
update WorkMessage workMessage
set workMessage.totalPrice = -(workMessage.totalCost - :a1)
但 SQL 结果是
update work_message set total_price=-total_cost-?
括号就消失了。难道我做错了什么?它看起来像这些:
w.totalCost.subtract(0.12f).negate()
w.totalCost.negate().subtract(0.12f)
有相同的结果。
针对上述问题
w.totalCost.negate().add(0.12f)
作品。但我认为有一个错误。