【发布时间】:2020-02-07 18:49:58
【问题描述】:
在我的应用程序的房间数据库中,我有一个名为 Messages 的表,如下所示。
@Entity(tableName = "messages")
data class MessageDto(
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "client_message_id")
var clientMessageId: Long,
@ColumnInfo(name = "message_id")
var messageId: Long = 0L,
@TypeConverters(EncryptString.Converter::class)
@ColumnInfo(name = "body", defaultValue = "")
var body: String,
@ColumnInfo(name = "msg_type")
var msgType: Int = 0,
@ColumnInfo(name = "message_date", defaultValue = "")
var messageDate: String,
.........
)
假设我想向数据库插入一条新消息。我创建了一个 MessageDto 对象,然后将其插入。
val messageDto = MessageDto(
newClientMessageId,
item.messageId,
item.body,
item.msgType,
item.msgDate
...)
messageDao.insert(messageDto)
1) 由于 PK 仅存在于本地数据库中,我必须将其声明为 mySelf。但是由于它的 autoIncrement 我应该输入什么值?
2) 我想用我创建的函数加密的列体。我拥有 TypeConverters 的方式是否正确?
【问题讨论】:
标签: android kotlin primary-key android-room