Android 房间数据库中的布尔查询

Android 房间数据库中的布尔查询,android,android-studio,android-sqlite,android-room,android-jetpack,Android,Android Studio,Android Sqlite,Android Room,Android Jetpack,我正在从网络上获取我的对象,并直接将它们插入房间数据库 @Entity(tableName = Constants.TABLE_OBJECT_ICONS) public class ObjectClass { @PrimaryKey() @SerializedName("id") @ColumnInfo(name = Constants.KEY_OBJECT_ID) @Expose private Integer id; @Serialized

我正在从网络上获取我的对象,并直接将它们插入房间数据库

@Entity(tableName = Constants.TABLE_OBJECT_ICONS)
public class ObjectClass {

    @PrimaryKey()
    @SerializedName("id")
    @ColumnInfo(name = Constants.KEY_OBJECT_ID)
    @Expose
    private Integer id;

    @SerializedName("controlUnit")
    @ColumnInfo(name = Constants.KEY_CONTROL_UNIT)
    @Expose
    private String controlUnit;

    @SerializedName("isStack")
    @ColumnInfo(name = Constants.IS_STACK)
    @Expose
    private Boolean isStack;

    public Boolean getStack() {
        return isStack;
    }

    public void setStack(Boolean stack) {
        isStack = stack;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getControlUnit() {
        return controlUnit;
    }

    public void setControlUnit(String controlUnit) {
        this.controlUnit = controlUnit;
    }

}
现在的问题是,我将Boolen数据类型插入DB,room将其映射到0和1,但当我尝试获取数据时,我的getStack()方法返回null

更新

@Entity(tableName = Constants.TABLE_OBJECT_ICONS)
public class ObjectClass {

    @PrimaryKey()
    @SerializedName("id")
    @ColumnInfo(name = Constants.KEY_OBJECT_ID)
    @Expose
    private Integer id;

    @SerializedName("controlUnit")
    @ColumnInfo(name = Constants.KEY_CONTROL_UNIT)
    @Expose
    private String controlUnit;

    @SerializedName("isStack")
    @ColumnInfo(name = Constants.IS_STACK)
    @Expose
    private Boolean isStack;

    public Boolean getStack() {
        return isStack;
    }

    public void setStack(Boolean stack) {
        isStack = stack;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getControlUnit() {
        return controlUnit;
    }

    public void setControlUnit(String controlUnit) {
        this.controlUnit = controlUnit;
    }

}
这是

@Dao
public interface ObjectDao {

    @Insert
    void insertObject(ObjectClass objectClass);

    @Query("DELETE FROM object_icons")
    void deleteAllObjects();

    @Query("SELECT * FROM object_icons WHERE object_id=:id AND site_id=:siteId")
    Single<ObjectClass> getObjectById(String id, String siteId);

    @Query("SELECT object_name FROM object_icons WHERE object_id=:id AND site_id=:siteId")
    String getObjectNameById(String id, String siteId);

    @Query("SELECT * FROM object_icons WHERE object_keyword=:key AND site_id=:siteId")
    ObjectClass getObjectByKey(String key, String siteId);

    @Query("SELECT * FROM object_icons WHERE site_id=:siteId")
    Single<List<ObjectClass>> getObjectIconsList(String siteId);

}
@Dao
公共接口ObjectDao{
@插入
void insertObject(ObjectClass ObjectClass);
@查询(“从对象图标中删除”)
void deleteAllObjects();
@查询(“从对象图标中选择*,其中对象id=:id和站点id=:siteId”)
单个getObjectById(字符串id、字符串siteId);
@查询(“从对象图标中选择对象名称,其中对象id=:id和站点id=:siteId”)
字符串getObjectNameById(字符串id、字符串站点id);
@查询(“从对象图标中选择*,其中对象关键字=:键,站点id=:站点id”)
ObjectClass getObjectByKey(字符串键、字符串站点ID);
@查询(“从对象图标中选择*,其中site\u id=:siteId”)
单个GetObjectConsList(字符串siteId);
}
在获取数据库后,我将其打开到SQLite Online中,下面是数据库的结构


当您阅读对象时,引用此房间应将
1
转换为
true
。另外,如果您从Sqlite迁移到Room,您可能会对
Boolean
Integer
类型有一些问题,我不知道这是否是您的情况,但这里有一个案例链接:

在读取对象时,引用此Room应该将
1
转换为
true
。另外,如果您从Sqlite迁移到Room,您可能会对
Boolean
Integer
类型产生一些问题,我不知道这是否是您的情况,但这里有一个链接,以防出现问题:

如果无法回答,请向上投票!你需要给这个问题多一些背景知识。1.发布来自youdao的fetch查询,2。它实际上是在插入布尔值吗?如果是的话,您是如何验证它的?@BadhrinathCanessane问题已更新。谢谢,您是否也可以发布Constants.Is_堆栈的值。确保您的实体中列的名称正确。如果无法回答,请向上投票!你需要给这个问题多一些背景知识。1.发布来自youdao的fetch查询,2。它实际上是在插入布尔值吗?如果是的话,您是如何验证它的?@BadhrinathCanessane问题已更新。谢谢,您是否也可以发布Constants.Is_堆栈的值。确保实体中列的名称正确无误。