I faced a problem when updating values of @Embedded object within an Entity.
Here is my Entity class:
@Entity
data class ReplyData(
@PrimaryKey val id: String,
@ColumnInfo(name = "sequence") val sequence: Int?,
@Embedded(prefix = "from") val from: From? <--- I want to update this @Embedded object within entity
)
@Entity
data class From(
@ColumnInfo(name = "id") val id: String? = "",
@ColumnInfo(name = "name") val name: String? = "",
@ColumnInfo(name = "avatar") val avatar: String? = "",
@ColumnInfo(name = "kind") val kind: String? = ""
)
I want to update these 3 values in 1 shot instead of updating them one-by-one with this query below.
@Query("UPDATE replydata.from SET name = :name, avatar = :avatar, kind = :kind WHERE id = :id")
fun updateReplyData(id: String, name: String, avatar: String, kind: String)
How can I achieve that without affecting the original entity (ReplyData)?
I tried this solution, but it is not working at all:
@Query("SELECT * FROM message WHERE id = :id")
suspend fun getReplyMessage(id: String): Message
@Update(entity = From::class)
suspend fun updateReply(msg: Message)
suspend fun updatePinMessage(id: String, from: From) {
val msg = getReplyMessage(id)
msg.from?.avatar = from.avatar
msg.from?.name = from.name
msg.from?.kind= from.kind
updateReply(msg)
}
from Roomdb - Update @Embedded object within an Entity
No comments:
Post a Comment