2016-04-13 4 views
0

У меня есть строкаКайена 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") 

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

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

ответ

0

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

+0

Есть ли способ сохранить первоначальный порядок скобок? – user3058642

+0

Не забудьте написать собственные выражения. –