Neu bei CB, ich versuche, es anstelle von nativen Abfragen zu verwenden. Der Grund ist, dass ich verschiedene Gruppierungen nach Situationen brauche. Hier ist, was ich bin reproduzieren müssen:Criteria Builder String basiert - Ausdruck quot als double - JPA
(1 - sum(field_1 [integer])::real/sum (field_2 [integer])::real ) * 100
Hier ist der Code ist, die annehmen, dass das tun:
Expression<Double> filed1Sum = cb.sumAsDouble(report.<Float>get("field1"));
Expression<Double> filed2Sum = cb.sumAsDouble(report.<Float>get("field2"));
Expression<Double> expected = cb.toDouble(cb.<Float>quot(filed1Sum, filed2Sum));
Das Problem ist: der erwartete Wert kommt wie lange !!! Da Feld1 immer kleiner ist als Feld2, habe ich 0 (Null). Ich frage mich, 0.888 so etwas zu bekommen.
zu helfen Was ist das _string bedeuten based_ Sie in den Titel gesetzt haben? Sind 'field1' und' field2' numerische Java-Felder oder nicht? – perissf
1 -String basiert Get ("String") im Gegensatz zu Metamodell basiert Get. (_ Class). –
2 - Natürlich nicht. Sie sind INTEGER Datenbankfelder nicht Java –