我想創建這樣的查詢與QueryDSL如何在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-?
括號只是dissapeared 。難道我做錯了什麼?它看起來像這樣:
w.totalCost.subtract(0.12f).negate()
w.totalCost.negate().subtract(0.12f)
具有相同的結果。
針對上述問題
w.totalCost.negate().add(0.12f)
作品。但我認爲有一個錯誤。
您可以在GitHub上打開它的票:https://github.com/mysema/querydsl/issues –
QueryDSL工作正常。這是一個Hibernate的bug。更新WorkMessage workMessage set workMessage.earnedPrice = - (workMessage.totalCost - :a1)轉換爲更新work_message set earn_price = -total_cost-? –
對不起,我誤解了 –