Я строю запрос 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.
Разве невозможно сделать связанный запрос условным?