Kotlin 在文件室数据库中搜索带有“like”的加密文本
在我的房间数据库中,我有一个实体MessageDto,其中包含要加密的body字段。为了实现这一点,我使用如下类型转换器Kotlin 在文件室数据库中搜索带有“like”的加密文本,kotlin,android-sqlite,android-room,typeconverter,Kotlin,Android Sqlite,Android Room,Typeconverter,在我的房间数据库中,我有一个实体MessageDto,其中包含要加密的body字段。为了实现这一点,我使用如下类型转换器 @Entity(tableName = "messages") data class MessageDto( @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "message_id") var messageId: Long, @TypeConverters(EncryptString
@Entity(tableName = "messages")
data class MessageDto(
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "message_id")
var messageId: Long,
@TypeConverters(EncryptString.Converter::class)
@ColumnInfo(name = "body", defaultValue = "")
var body: EncryptString
.....
正如您所看到的,主体是EncryptString类型,它是一个将字符串转换为另一个字符串的类
class EncryptString(var value: String = "") {
class Converter {
@TypeConverter
fun decrypt(encrypted: String): EncryptString {
return EncryptString(encrypted.toDecrypt())
}
@TypeConverter
fun encrypt(decrypted: EncryptString): String {
return decrypted.value.toEncrypt()
}
}
}
现在我想进行一个select查询,并在messages.body字段上使用Sql的类似函数
当我运行下面的查询时,我没有得到任何结果,尽管我知道文本作为EncryptString存在于正文中
@Query("Select body from messages where body like :text")
fun searchMessage(text: String): List<EncryptString>
我做错了什么 我认为您需要以以下形式更改Dao方法: @QuerySelect body from messages where body like:text 趣味searchMessagetext:EncryptString:List
只需将输入参数类型从String更改为EncryptString我认为您需要按以下形式更改Dao方法:
@Query("Select body from messages where body like :text")
fun searchMessage(text: String): List<EncryptString>
@QuerySelect body from messages where body like:text
趣味searchMessagetext:EncryptString:List
只需将输入参数类型从String更改为EncryptString运气好吗??我也被困在这里了。运气好吗??我也被困在这里了。
@Query("Select body from messages where body like :text")
fun searchMessage(text: String): List<EncryptString>