Sugar ORM无法使用布尔值查询列

KaH*_*HeL 2 sqlite android sugarorm

我正在使用Sugar ORM来查询应用列表.我有一个布尔列用于标记字段,使用:

@Setter @Getter public boolean isNew = false;
Run Code Online (Sandbox Code Playgroud)

现在,在API调用之后,我将更新并保存记录以标记所有新应用程序然后显示我将使用以下内容查询它:

List<AppsModel> app_list = AppsModel.find(AppsModel.class, "is_new = ?", "true");
Run Code Online (Sandbox Code Playgroud)

问题是它返回0条目,它在我的结尾有3.要检查我获取所有列表并逐个检查列以检查其值:

List<AppsModel> test = AppsModel.listAll(AppsModel.class);
        for(int i=0;i<test.size();i++){
            Log.e("Test app size", String.valueOf(test.get(i).isNew()));
        }
Run Code Online (Sandbox Code Playgroud)

并且它按预期返回3并带有真值.我可以使用这个循环列表,但我不想,因为我想尽可能保持我的代码清洁.

我在这里错过了什么吗?

KaH*_*HeL 8

好吧,我找到了答案,在这里从satyan自己

所以基本上,使用"true"将它匹配为String.所以改为使用:

List<AppsModel> app_list = AppsModel.find(AppsModel.class, "is_new = ?", "1");
Run Code Online (Sandbox Code Playgroud)

由于SQlite将布尔值存储为0和1.

  • 它不是Sugar ORM,SQLite将布尔值存储为0和1. [参考](https://sqlite.org/datatype3.html) (2认同)