Cayenne Expression.fromString не поддерживает порядок скобок

У меня есть строка

((effectiveDate >= "11/01/2015") and (effectiveDate < "04/30/2016")) and (not ((name like "*John*")) and (name like "*Smith*") and (age > "20"))

После того, как я преобразовал его в выражение, он не поддерживает порядок скобок

    Expression exp = Expression.fromString(origExpStr);
    System.out.println(exp);

Это приводит к

(effectiveDate >= "11/01/2015") and (effectiveDate < "04/30/2016") and not ((name like "*John*")) and (name like "*Smith*") and (age > "20")

Логически это может означать то же самое, но я бы хотел сохранить порядок скобок, чтобы сохранить правильную группировку.

Есть ли способ сохранить порядок скобок после преобразования в выражение

1 ответ

Cayenne Expression.toString() генерирует минимально допустимое выражение, которое не меняет порядок операндов. Таким образом, он будет иметь свой собственный стиль скобок, который может совпадать или не совпадать с исходным набором скобок. Точно так же, как вы заметили.

Другие вопросы по тегам