嵌入房间/ Android

时间:2018-11-16 14:17:46

标签: android-room pojo

我正在尝试从Android Room数据库中获取Pojo,就像我为另一个对象所做的那样,但是我得到以下错误代码:

  

错误:查询存在问题:[SQLITE_ERROR] SQL错误或缺少数据库(无此类列:e_item_type_id)

ItemEntity

@Entity(tableName = "items",
    foreignKeys ={
        @ForeignKey(
                entity = ItemTypeEntity.class,
                parentColumns = "e_item_type_id", // remote class
                childColumns = "item_type_id" // local class
        )
    }
    ,
    indices = {
            @Index(value = {"item_type_id"})
    })

public class ItemEntity extends BaseEntity implements Item {

    @PrimaryKey(autoGenerate = true)
    @ColumnInfo(name = "e_item_id")
    private Integer id = null;

    @ColumnInfo(name = "item_type_id")
    private int itemTypeId;

    public int getItemTypeId() {
        return itemTypeId;
    }

    public void setItemTypeId(int itemTypeId) {
        this.itemTypeId = itemTypeId;
    }

    @Override
    public Integer getId() {
        return id;
    }
    public void setId(Integer id){ this.id = id;}

}

ItemTypeEntity

@Entity(tableName = "itemTypes")
public class ItemTypeEntity extends BaseEntity {

    @PrimaryKey(autoGenerate = true)
    @ColumnInfo(name = "e_item_type_id")
    private Integer id = null;

    @ColumnInfo(name = "item_type_name")
    private String name;


    @Ignore
    public ItemTypeEntity(String name) {
        this.name = name;
    }

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

}

Pojo ItemWithType

public class ItemWithType {
    @Embedded
    public ItemEntity item;

    @Embedded
    public ItemTypeEntity itemType;

}

ItemDao

@Dao
public abstract class ItemDao {

    @Transaction
    @Query("SELECT * "FROM " + "items )
    public abstract List<ItemWithType> getAll();


}

这与另一个Pojo很好地配合,因为关系是自动完成的。

我也有以下警告:

  

ch.pa.oceanspolluters.app.database.pojo.ItemWithType具有一些字段[e_item_type_id,item_type_name],查询未返回这些字段。如果不应从结果中读取它们,则可以使用@Ignore批注对其进行标记。您可以通过使用@SuppressWarnings(RoomWarnings.CURSOR_MISMATCH)注释该方法来禁止显示此警告。查询返回的列:e_item_id,container_id,weight_kg,item_type_id。 ch.pa.oceanspolluters.app.database.pojo.ItemWithType中的字段:e_item_id,container_id,weight_kg,item_type_id,e_item_type_id,item_type_name。

0 个答案:

没有答案