So, I have these entities
@Entity(
tableName = "emojis",
foreignKeys = [
ForeignKey(entity = GroupEntity::class, parentColumns = ["group_id"], childColumns = ["group_id"], onDelete = ForeignKey.NO_ACTION),
ForeignKey(entity = SubGroupEntity::class, parentColumns = ["subgroup_id"], childColumns = ["subgroup_id"], onDelete = ForeignKey.NO_ACTION)
]
)
data class EmojiEntity(
@PrimaryKey(autoGenerate = false)
@ColumnInfo(name = "id")
val id: Int,
@ColumnInfo(name = "hex")
val hex: String,
@ColumnInfo(name = "description")
val desc: String,
@ColumnInfo(name = "skin_tone")
val skinTome: String?,
@ColumnInfo(name = "group_id")
val groupID: Int,
@ColumnInfo(name = "subgroup_id")
val subGroupId: Int
)
@Entity(tableName = "groups")
data class GroupEntity(
@PrimaryKey(autoGenerate = false)
@ColumnInfo(name = "group_id")
val id: Int,
@ColumnInfo(name = "group_name")
val name: String
)
@Entity(tableName = "subgroups")
data class SubGroupEntity(
@PrimaryKey(autoGenerate = false)
@ColumnInfo(name = "subgroup_id")
val id: Int,
@ColumnInfo(name = "subgroup_name")
val name: String,
@ColumnInfo(name = "group_id")
val groupId: String
)
I have an external database file that I’m trying to import. It is failing with these errors.
// Expected
// TableInfo{name='emojis', columns={description=Column{name='description', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='undefined'}, hex=Column{name='hex', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='undefined'}, id=Column{name='id', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=1, defaultValue='undefined'}, skin_tone=Column{name='skin_tone', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='undefined'}, group_id=Column{name='group_id', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='undefined'}, subgroup_id=Column{name='subgroup_id', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='undefined'}}, foreignKeys=[ForeignKey{referenceTable='groups', onDelete='NO ACTION +', onUpdate='NO ACTION', columnNames=[group_id], referenceColumnNames=[group_id]},ForeignKey{referenceTable='subgroups', onDelete='NO ACTION +', onUpdate='NO ACTION', columnNames=[subgroup_id], referenceColumnNames=[subgroup_id]}], indices=[]}
// Found
// TableInfo{name='emojis', columns={description=Column{name='description', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='undefined'},hex=Column{name='hex', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='undefined'}, id=Column{name='id', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=1, defaultValue='undefined'}, skin_tone=Column{name='skin_tone', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='undefined'}, group_id=Column{name='group_id', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=0, defaultValue='undefined'}, subgroup_id=Column{name='subgroup_id', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=0, defaultValue='undefined'}}, foreignKeys=[ForeignKey{referenceTable='groups', onDelete='NO ACTION +', onUpdate='NO ACTION', columnNames=[group_id], referenceColumnNames=[group_id]},ForeignKey{referenceTable='subgroups', onDelete='NO ACTION +', onUpdate='NO ACTION', columnNames=[subgroup_id], referenceColumnNames=[subgroup_id]}], indices=[]}
Create statement from SQLite Explorer
CREATE TABLE emojis (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
hex TEXT NOT NULL,
description TEXT NOT NULL,
skin_tone TEXT,
group_id INTEGER NOT NULL,
subgroup_id INTEGER NOT NULL,
FOREIGN KEY (group_id) REFERENCES groups (group_id),
FOREIGN KEY (subgroup_id) REFERENCES subgroups (subgroup_id)
)
Not sure why room is not detecting non-null types.
2