房间查询不适用于<String>使用类型转换器的列表



我正试图在Room中执行sqlite查询,其中有一个搜索字符串,可以为空,也可以不为空。如果为空,则我希望返回特定类型的所有项目,否则我希望返回与搜索字符串匹配的特定类型的任何内容。在我的模型中,类型被定义为List,如下所示:

@TypeConverters(DataConverter::class)
var type: List<String>? = null,

我写了一个查询,但它没有考虑类型,并返回包含搜索查询的所有内容。我做错了什么?

SELECT * FROM practice 
WHERE type LIKE '%' || 'video' || '%'
AND (title LIKE '%' || :query || '%' 
OR content LIKE '%' || :query || '%' 
OR categories LIKE '%' || :query || '%' 
OR tags LIKE '%' || :query || '%')
ORDER BY id ASC LIMIT (:page * :pageSize)

好的,我发现了问题,我试图将字符串与列表匹配,因为使用类型转换器,它以字符串的形式存储在数据库中。但实际上它被转换回查询的列表,所以我把"video"改为listOf("video(来解决问题。

最新更新