使用 DbFlow 计算单列的 SUM

calculate SUM for single column with DbFlow

我正在使用最新版本的 DBFLOW 库,我正在尝试将单列的总和计算为 countOfNewPosts

这是我的 table:

public class CafeWebNewPostInformation extends BaseModel {
    @PrimaryKey
    @Column
    public int id;

    @Column
    public int cafeWebServerId;

    @Column
    public int countOfNewPosts;

    @Column
    @ForeignKey(tableClass = AlachiqCafeWebs.class,
            references = @ForeignKeyReference(columnName = "parentId", foreignKeyColumnName = "id"))
    private int parentId;

    @Column
    public int lastSavedId;

    @Column
    public int lastRequestedId;

    @Column
    public int lastRetrievedId;
}

这是我从 table:

中获取的代码
CafeWebNewPostInformation countOfNewPost =
        SQLite.select(
                Method.sum(CafeWebNewPostInformation_Table.countOfNewPosts).as("count")
        )
                .from(CafeWebNewPostInformation.class).querySingle();

我没有收到任何错误,这是结果:

屏幕截图:

这个结果发生了什么,count 在哪里?

问题已解决

想一想。你打电话给

SELECT SUM(`countOfNewPosts`) as 'count' FROM `CafeWebNewPostInformation`

这意味着您返回的结果仅包含来自该查询的单行计数。你不会得到任何错误,因为我们没有在 Cursor 上实现严格的列匹配。您需要定义一个 @QueryModel QueryModels,它有一个名为 count:

的字段
@QueryModel // (add database reference)
public class CountOfPost {

  @Column
  public int count;
}

然后

CountOfPost count = SQLite.select(
  Method.sum(CafeWebNewPostInformation_Table.countOfNewPosts).as("count"))
  .from(CafeWebNewPostInformation.class)
  .queryCustomSingle(CountOfPost.class);  

或者您可以不调用 querySingle() 而调用 count().

reference