【发布时间】:2021-07-31 18:54:23
【问题描述】:
我正在尝试在 android 中插入一个具有一对一关系的对象。 更准确地说,我正在尝试遵循以下示例 googles official documentation
我正在使用两个类用户和库。 我遇到的问题是如何在数据库中插入元素。 我的代码是这样写的
@Entity
data class Library(
@PrimaryKey(autoGenerate = true) val libraryId: Long = 0,
val userOwnerId: Long
)
@Entity
data class User(
@PrimaryKey(autoGenerate = true) val userId: Long =0,
val name: String,
val age: Int
)
data class UserAndLibrary(
@Embedded val user: User,
@Relation(
parentColumn = "userId",
entityColumn = "userOwnerId"
)
val library: Library
)
插入的逻辑是这样的
private val repository = UserRepository(application)
fun insertUser() {
val user1 = User(name = "User1", age = 31)
val user2 = User(name = "User2", age = 32)
val library1 = Library(userOwnerId = user1.userId)
val library2 = Library(userOwnerId = user2.userId)
viewModelScope.launch {
repository.insertUser(user1)
repository.insertUser(user2)
repository.insertLibrary(library1)
repository.insertLibrary(library2)
}
repository 和 dao 类的代码如下所示
//repository
suspend fun insertUser(user: User) = appDataBase.userDao().insertUser(user)
suspend fun insertLibrary(library: Library)=appDataBase.userDao().insertLibrary(library)
//dao
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertUser(user: User)
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertLibrary(library: Library)
问题是库表中的外键总是0。
【问题讨论】:
标签: android android-room