Эквивалент SQL облегченный запрос в ObjectBox - PullRequest
1 голос
/ 06 февраля 2020

У меня следующий запрос SQLlite, который должен отображать штрих-код и суммировать количество штрих-кодов между указанным c диапазоном дат. Запрос SQLite показан ниже:

 public Cursor getResult(Date start, Date end) 

    String[] selectionArgs = new String[]{String.valueOf(start.getTime()), String.valueOf(end.getTime())};
    String selection = "SELECT " + SalesProjections.BARCODE.getName() +
            ", SUM(" + SalesProjections.QUANTITY.getName() + ") " +
            "FROM " + SalesProjections.TABLE_NAME +
            " WHERE " + SalesProjections.DATEPROJECTED.getName() + " BETWEEN ? AND ? " +
            " GROUP BY " + SalesProjections.BARCODE.getName();

    return   RepositoryAPI.getInstance().getCursorByRawQuery(
            selection,
            selectionArgs,
            ORDER.ASC,
            SalesProjections.BARCODE.getName());
}

Я сейчас пытаюсь преобразовать тот же запрос для использования ObjectBox. Ниже приведены класс и функция данных:

Класс SalesProjection выглядит следующим образом:

@Entity
data class SalesProjections(
    @Id var id: Long = 0,
    val barCode: String? = null,
    val dateProjected: Long = 0,
    val quantity: Int = 0)

, и моя текущая попытка преобразования выглядит следующим образом:

fun getResult(start: Date, end: Date) {

    val builder = saleprojectionBox.query()
    var result = builder
        .between(SalesProjections_.dateProjected, start.time, end.time)
        .order(SalesProjections_.barCode)
        .build()
        .find()
}

Я знаю, что ObjectBox не имеет функции GroupBy, и я не хотел разбивать каждый результат и сначала получать список или штрих-коды, а затем получать список количеств на основе штрих-кодов. Могу ли я получить несколько советов о том, как я могу достичь своих потребностей

...