Я бы хотел создать такой запрос с помощью 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());
но я бы хотел знать, как это сделать первым способом.
// * РЕДАКТИРОВАТЬ 1014 *
Второй способ не работает:
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)
работает. Но я думаю, что есть ошибка.