首页 > 解决方案 > how to query a specific string from a list of string in Android RoomDB

问题描述

Is it possible to query a specific string from a list of string in an Entity in RoomDB?

here is my Entity

 @Entity
data class Radical(
@PrimaryKey
val pkey: Int = 0,
@ColumnInfo(name="radical_name")
val radicalName: String,
@ColumnInfo(name="radical_strokes")
val radicalStrokes:List<String>
)

Then my interface would be like

@Query("SELECT * FROM RADICAL WHERE radicalStrokes == :radicalStrokes")
suspend fun fetchRadical(radicalStrokes: String): Radical

It returns null.

标签: androidkotlinandroid-room

解决方案


您可以使用LIKE(与 contains() 方法相同)而不是 ==

例如

@Query("SELECT * FROM RADICAL WHERE radicalStrokes LIKE '%' ||  :radicalStrokes || '%' ")
suspend fun fetchRadical(radicalStrokes: String): Radical

推荐阅读