是的。有一种方法可以用数据预先填充 Room。你所要做的就是在你的配置中调用一个函数:
如果您将 db 文件放在 assets 文件夹中:
Room.databaseBuilder(appContext, AppDatabase.class, "Sample.db")
.createFromAsset("database/myapp.db")
.build()
不过,有一些细节可能会对您有所帮助,因此请浏览this 文章一次。
你也可以通过the official docs
编辑:对于您的其他问题:如何组织表格。你的流程是正确的。首先有一个用户表:
@Entity(tableName = "user)
data class User(
@PrimaryKey
@ColumnInfo(name = "id")
val id: Int,
@ColumnInfo(name = "favorite_movies")
val favoriteMovies: List<Movie>,
... other fields here
)
然后在Movie 实体上:
@Entity(tableName = "movies",
foreignKeys = [ForeignKey(
entity = User::class,
parentColumns = arrayOf("id"),
childColumns = arrayOf("user_id"),
onDelete = CASCADE
)]
)
data class Movie(
@PrimaryKey
@ColumnInfo("id")
val id: Int,
@ColumnInfo(name = "user_id", index = true)
val userId: Int,
.... other fields here
)