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() генерирует минимально допустимое выражение, которое не меняет порядок операндов. Таким образом, он будет иметь свой собственный стиль скобок, который может совпадать или не совпадать с исходным набором скобок. Точно так же, как вы заметили.