Условная проекция данных Spring не работает должным образом - PullRequest
0 голосов
/ 21 февраля 2019

По сути, у меня есть два поля «totalAmountWithShipping» и «totalAmountPlusShipping», и я хочу проецировать «totalAmountWithShipping» в новое поле с именем realTotalAmount, если «totalAmountWithShipping» больше 0, и проект «totalAmountPlusShipping» в «realT».

Я пробовал это:

project("day", "month", "year")
                    .and(
                        ConditionalOperators.`when`(
                            ComparisonOperators.Eq.valueOf("totalAmountWithShipping").equalToValue(0.0)
                    ).thenValueOf("totalAmountPlusShipping").otherwiseValueOf("totalAmountWithShipping")).`as`("realTotalAmount")

, но всегда получаю 0.0 на "realTotalAmount", если условие истинно (то есть, если я проецирую "totalAmountPlusShipping").Это работает как должно, когда условие ложно, хотя.

Если я попытаюсь:

project("day", "month", "year")
                    .and(
                        ConditionalOperators.`when`(
                            ComparisonOperators.Eq.valueOf("totalAmountWithShipping").equalToValue(0.0)
                    ).then(100.0).otherwise(1.0)).`as`("realTotalAmount")

, это работает как ожидалось.

1 Ответ

0 голосов
/ 03 марта 2019

Используйте '$' с именем поля, так как вы передаете ссылку на это поле.Следующий запрос должен работать:

project("day", "month", "year")
                    .and(
                        ConditionalOperators.when(
                            ComparisonOperators.Eq.valueOf("$totalAmountWithShipping").equalToValue(0.0)
                    ).thenValueOf("$totalAmountPlusShipping").otherwiseValueOf("$totalAmountWithShipping")).as("realTotalAmount")
...