Kotlin 在文件室数据库中搜索带有“like”的加密文本

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

在我的房间数据库中,我有一个实体MessageDto,其中包含要加密的body字段。为了实现这一点,我使用如下类型转换器

@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>