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());
しかし、最初の方法でそれを行う方法を知りたいです。
//編集
2番目の方法は機能しません:
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)
動作します。しかし、バグがあると思います。