Corda - проблема с использованием VaultCustomQueryCriteria - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь использовать VaultCustomQueryCriteria ( Corda - Java ) с агрегатной функцией SUM , но я не получаю результатов.

Если я использую другойVaultCustomQueryCriteria, запрос работает.

Что я делаю не так?

Ниже приведены несколько примеров:

Запрос OK:

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

Field name = ExampleSchemaV1.Ingestion.class.getDeclaredField("name");

QueryCriteria countCriteria = new QueryCriteria.VaultCustomQueryCriteria(Builder.equal(name, "Mark"));
List<StateAndRef<IngestionState>> results = rpcOps.vaultQueryByCriteria(countCriteria,IngestionState.class).getStates();

Запрос КО: (без результатов)

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

Field nr = ExampleSchemaV1.Ingestion.class.getDeclaredField("nr");    
Field name = ExampleSchemaV1.Ingestion.class.getDeclaredField("name");

CriteriaExpression sumQta = Builder.sum(nr, Arrays.asList(name));    
QueryCriteria sumQtaCriteria = new QueryCriteria.VaultCustomQueryCriteria(sumQta);

QueryCriteria criteria = statusCriteria.and(sumQtaCriteria);

List<StateAndRef<IngestionState>> results = rpcOps.vaultQueryByCriteria(criteria,IngestionState.class).getStates();

1 Ответ

0 голосов
/ 15 октября 2018

Каждый запрос хранилища возвращает объект Vault.Page.При выполнении запроса суммы результат суммы доступен через Vault.Page.getOtherResults(), а не через Vault.Page.getStates().

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

...