Wie erstellen Sie Konstanten numerischen Wert Ausdruck in QueryDSL?

Ich würde gerne Abfrage erstellen, wie dies mit QueryDSL

update WorkMessage w set w.totalPrice = 0.12 - w.totalCost;

Ich habe versucht, wie diese

    Expression<Float> priceExpr = Expressions.constant(0.12f);

    new JPAUpdateClause(em, w)
            .set(w.totalPrice , priceExpr.subtract(w.totalCost));

Aber das funktioniert nicht - Ausdruck nicht subtrahieren Methode.

Habe ich es wie folgt:

        new JPAUpdateClause(em, w)
            .set(w.totalPrice , w.totalCost.subtract(0.12f).negate());

aber ich würde gerne wissen, wie zu tun es der erste Weg.

//EDit

Der zweite Weg funktioniert nicht:

JPAUpdateClause.toString sagt:

update WorkMessage workMessage 
set workMessage.totalPrice = -(workMessage.totalCost - :a1)

aber das SQL-Ergebnis

update work_message set total_price=-total_cost-?

Klammern einfach verschwunden. Mache ich etwas falsch? Es sieht aus wie diese:

w.totalCost.subtract(0.12f).negate()
w.totalCost.negate().subtract(0.12f)

haben das gleiche Ergebnis.

Für das obige problem

w.totalCost.negate().add(0.12f)

funktioniert. Aber ich denke, es ist ein bug.

  • Konnte Sie öffnen Sie ein ticket auf GitHub : github.com/mysema/querydsl/issues
  • QueryDSL funktioniert OK. Es ist ein Hibernate-bug. update WorkMessage workMessage set workMessage.earnedPrice = - ( workMessage.totalCost - :a1 ) übersetzt in update work_message set earned_price=-total_cost-?
  • Sorry, habe ich falsch verstanden
  • Ich dachte, es war etwas mit QueryDSL, aber es ist mit Hibernate selbst. Erstellt ein Problem hibernate.onjira.com/browse/HHH-6714 . Danke für die Hilfe.
Schreibe einen Kommentar