Запрос с использованием .or и .link вместе не работает - PullRequest
0 голосов
/ 04 марта 2020

Я строю запрос ObjectBox на Android, используя серию операторов if:

QueryBuilder<CustomerData> qb = CustomersBox.query();
            qb.contains(CustomerData_.NAME, SearchTerm);
            if (SearchTerms.contains("AGENT"))
                qb.or().contains(CustomerData_.AGENT, SearchTerm);
            if (SearchTerms.contains("CUSTNUM"))
                qb.or().contains(CustomerData_.CUSTNUM, SearchTerm);

Если оставить это, как указано выше, он отлично работает с простым qb.build().find();

Теперь я ссылаюсь на объект OneToMany для дополнительных условий поиска:

            if (SearchTerms.contains("DELIVERYNOTES")) {
                qb.or().link(CustomerData_.Products).contains(CustomerProduct_.DELY1, SearchTerm);

Однако это умирает с IllegalStateException: An operator is pending. Use operators like and() and or() only between two conditions.

Разве невозможно сделать связанный запрос условным?

1 Ответ

0 голосов
/ 09 марта 2020

Да, в настоящее время это не поддерживается. Вызов QueryBuilder.link(property) возвращает отдельный экземпляр QueryBuilder.

См. https://github.com/objectbox/objectbox-java/issues/497, который запрашивает эту функцию. Пожалуйста, палец вверх!

...