【问题标题】:Boolean Query In Room Database房间数据库中的布尔查询
【发布时间】:2020-03-18 07:08:41
【问题描述】:

我从网上获取我的对象并将它们直接插入到 ROOM DATABASE

@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,并且房间将其映射到 0 和 1,但是当我尝试获取数据时,我的 getStack() 方法返回 null

更新

这里是

@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);

}

我把数据库打开到SQLite Online下面是数据库的结构。

【问题讨论】:

  • 如果无法回答请点赞!
  • 您需要为这个问题提供更多背景信息。 1. 发布你 Dao 的 fetch 查询,2. 它实际上是否插入了布尔值,如果是,你是如何验证的?
  • @BadhrinathCanessane 问题已更新。
  • 谢谢,您能否也发布 Constants.IS_STACK 的值。确保实体中的列名称正确。

标签: android android-studio android-sqlite android-room android-jetpack


【解决方案1】:

在阅读对象时,引用此 answer Room 应将 1 转换为 true。此外,如果您从 Sqlite 迁移到 Room,您可能会遇到 BooleanInteger 类型的问题,我不知道这是否是您的情况,但这里有一个链接以防万一:room migration using existing boolean column types

【讨论】:

  • 正确答案,谢谢。
猜你喜欢
  • 2018-05-23
  • 1970-01-01
  • 2023-03-28
  • 2022-09-27
  • 2018-06-18
  • 1970-01-01
  • 2020-02-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多