ルームアンドロイドの1対多の関係を挿入するエンティティ

ハンナ:

助けてください!私は唯一の関係1対多とdatabesの挿入のPOJOに問題があります。私は、データベース内のすべてのリストを挿入する方法POJOと誤解を持っています?

@Entity
data class Street(
    @PrimaryKey(autoGenerate = true)
    var id: Int = 0
) {
    @Ignore
    var houses: List<House>? = listOf()
}

@Entity
data class House(
    @PrimaryKey(autoGenerate = true)
    var id: Int = 0,
    var streetId: Int
) {
    @Ignore
    var flats: List<Flat>? = listOf()
}

@Entity
data class Flat(
    @PrimaryKey(autoGenerate = true)
    var id: Int = 0,
    var houseId: Int
)

私の男を助けてください!

アレックスGrebennikov:

あなたは削除する必要が@Ignore注釈と利用型コンバータを

私見唯一のPOJOのIDと全体ではなく、オブジェクトなどを保存することをお勧めします

@Entity
data class House(
    @PrimaryKey(autoGenerate = true)
    var id: Int = 0,
    var streetId: Int,
    var flatIds: List<Int>? = listOf()
)

そして、あなたはすべてのそれらの干潟を必要なときだけこれらのIDでFlatDaoを問い合わせます


あなたはまだ全体のオブジェクトを保存したい場合は、Gsonに変換してから戻って変換することができます

class YourObjectConverter {

    @TypeConverter
    fun listToJson(value: List<YourObject>?): String {

        return Gson().toJson(value)
    }

    @TypeConverter
    fun jsonToList(value: String): List<YourObject>? {

        val objects = Gson().fromJson(value, List<YourObject>::class.java) as Array<YourObject>
        val list = objects.toList()
        return list
    }
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=7688&siteId=1