使用DbFlow计算单列的SUM

时间:2017-08-01 07:46:48

标签: android database dbflow

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

这是我的表:

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;
}

这是我从此表中获取该代码的代码:

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

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

截图:

enter image description here

此结果发生了什么以及count在哪里?

1 个答案:

答案 0 :(得分:1)

问题解决了

想一想。你在打电话

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