首页 > 解决方案 > ObjectBox 中的等效 SQL lite 查询

问题描述

我有以下 SQLlite 查询,它应该显示条码并计算特定日期范围之间条码的数量。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。请参阅下面的数据类和函数:

SalesProjections类如下:

@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 功能,我不想分解每个结果并首先获取列表或条形码,然后根据条形码获取数量列表。我能得到一些关于如何实现我的需求的指示吗

标签: androidsqlitekotlinobjectbox

解决方案


推荐阅读