Использование VaultQuery с сортировкой не будет работать, если нет других условий поля - PullRequest
0 голосов
/ 25 апреля 2019

Я использую vaultQueryBy, который запрашивает все Unconsumed state и сортирует с некоторым полем этого состояния, но это не работает (результат - полностью случайная сортировка). Затем я использую тот же vaultQueryBy, но добавляю какое-то равное условие, тогда результат идеально сортируется.

Я пробовал также с другим полем (типа String и long), но оно также не работает, если не используется с другим условием поля.

Вот код

QueryCriteria queryCriteria = new QueryCriteria.VaultQueryCriteria(Vault.StateStatus.UNCONSUMED);

Sort.SortColumn sortCol = new Sort.SortColumn(new SortAttribute.Custom(CustomerSchema.CustomerEntity.class, "changeDate"), Sort.Direction.DESC);
List list = new ArrayList();
list.add(sortCol);
List<StateAndRef<CustomerState>> list = rpcOps().vaultQueryBy(queryCriteria, pageSpecification, new Sort(sortList), CustomerState.class).getStates();

И это не работает, тогда я добавляю это условие перед vaultQueryBy

QueryCriteria baseCriteria = new QueryCriteria.VaultCustomQueryCriteria(Builder.notNull(getField("linearId", CustomerSchemaV01.CustomerEntity.class)));
queryCriteria = queryCriteria.and(baseCriteria);

И это работает нормально, получи результат с правильной сортировкой.

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

1 Ответ

0 голосов
/ 29 апреля 2019

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

...