根据the documentation,@Insert
函数可以返回long
,它是插入项目的新rowId
。如何使用返回值?
@Dao
interface TodoDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insert(todo: TodoItem): Long
}
请注意,id
的{{1}}是自动生成的。
@Entity
这里是整个@PrimaryKey(autoGenerate = true)
实体。
TodoItem
答案 0 :(得分:1)
如果id on
TodoItem is a
var , you could assign the return value to
id`,那么您的实体现在具有其生成的主键,可用于将来的DAO操作。
如果要使用@Parcelize
,请确保所有基本属性都在data class
构造函数中。就目前而言,您的todoId
属性不会放入Parcel
中。
@Entity(tableName = "todos")
@Parcelize
data class TodoItem(
val text: String,
val priority: Priority,
@PrimaryKey(autoGenerate = true) var todoId: Long = 0
) : Parcelable
然后,给一个名为entity
的实体和一个名为dao
的DAO:
entity.todoId = dao.insert(entity)