Android Room查询对象具有至少一个存在于另一个列表中的项目

Oktawian

让我先显示一些代码。我在数据库中有症状对象的列表:

val symptomA = Symptom(id = 0, name = "SymptomA")
val symptomB = Symptom(id = 1, name = "SymptomB")
val symptomC = Symptom(id = 2, name = "SymptomC")
val symptomD = Symptom(id = 3, name = "SymptomD")

我还在数据库中列出了疾病对象:

val diseaseA = Disease(id = 0, name = "DiseaseA", listOfSymptoms = listOf(0, 1))
val diseaseB = Disease(id = 1, name = "DiseaseB", listOfSymptoms = listOf(1, 2, 3))
val diseaseC = Disease(id = 2, name = "DiseaseC", listOfSymptoms = listOf(0, 2))
val diseaseD = Disease(id = 3, name = "DiseaseD", listOfSymptoms = listOf(3))

我正在使用的一些类:

疾病

@Entity(tableName = "diseases")
data class Disease(
    @PrimaryKey @NotNull val id: Int,
    @NotNull val name: String,
    @ColumnInfo(name = "symptoms_ids") val symptomsIds: String,
    ...)

症状道

@Dao
interface DiseaseDao {

    @Query("SELECT * FROM diseases WHERE id LIKE :id LIMIT 1")
    fun getDisease(id: Int): Disease

    @Query("SELECT * FROM diseases")
    fun getAllDiseases(): LiveData<List<Disease>>

    @Query("SELECT * FROM diseases WHERE symptoms_ids IN (:symptoms)")
    fun getDiseasesWithSymptoms(symptoms: List<Int>): LiveData<List<Disease>>
    // The query from question ^
}

转换器(在db类中用于将String转换为列表)

class Converter {

    @TypeConverter
    fun fromString(stringListString: String) = stringListString.split(";").map { it.toInt() }

    @TypeConverter
    fun toString(stringList: List<Int>) = stringList.joinToString(";")
}

是否可以按房间查询列表中至少具有一个症状ID的所有疾病?我正在使用MVVM模式,是否可以在DAO中做到这一点,还是应该在Repository或ViewModel类中创建一个函数?

第一个例子:

输入= listOf(0)

结果= listOf(diseaseA, diseaseC)

第二个例子:

输入= listOf(1, 2)

结果= listOf(diseaseA, diseaseB, diseaseC)

汤玛斯·贝索(TomášBeňo)

您必须在中进行操作,ViewModel因为SQL / Room无法理解List类型,因此无法为您执行此类检查。

fun getDiseasesWithSymptoms(symptoms: List<Int>): LiveData<List<Disease>> {
    return Transformations.map(diseaseDao.getAllDiseases()) { diseases ->
        diseases.filter { disease ->
            disease.listOfSymptoms.any { symptoms.contains(it)}
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android Room查询对象具有至少一个存在于另一个列表中的项目

来自分类Dev

如何发布具有另一个android库项目依赖项的AAR?

来自分类Dev

如何在需要的Android示例中单击将项目从一个列表视图添加到另一个列表视图

来自分类Dev

从另一个Android项目调用

来自分类Dev

Android Java:从另一个项目返回方法

来自分类Dev

您如何将一个项目放在android中另一个项目的后面?

来自分类Dev

如何在Android中将对象列表从一个活动传递到另一个活动?

来自分类Dev

如何在Android中将对象列表从一个活动传递到另一个活动?

来自分类Dev

Android应用程序-在另一个活动中执行某个操作后,从列表中删除项目

来自分类Dev

android:从另一个类中的另一个线程更新UI

来自分类Dev

如何从另一个线程android访问对象

来自分类Dev

如何使一个android库项目依赖另一个库而又没有冲突?

来自分类Dev

Python:比较列表中的值(如果存在于另一个列表中)

来自分类Dev

如何搜索列表中的数字是否存在于另一个列表中?

来自分类Dev

检查列表是否存在于另一个列表中

来自分类Dev

强迫存在于内存中的对象指向另一个对象?

来自分类Dev

如果同一项目存在于另一个列表中,如何从一个Excel列表中删除它

来自分类Dev

如何将另一个android项目的.so文件用于另一个项目

来自分类Dev

根据存在于另一个具有不同属性的数组中的存在来过滤数组

来自分类Dev

MySQL查询按存在于另一个表中

来自分类Dev

MySQL 查询不存在于另一个表中

来自分类Dev

mongoose - 查询存在于另一个字段中的字段

来自分类Dev

如何将HashSet对象从一个片段传递到android中的另一个片段

来自分类Dev

如何判断对象的所有值是否存在于另一个对象中

来自分类Dev

Android json解析另一个对象和数组中的对象

来自分类Dev

检查一个对象中的项目是否存在于另一个对象中(使用下划线)

来自分类Dev

检查一个对象中的项目是否存在于另一个对象中(使用下划线)

来自分类Dev

设置属性(如果存在于另一个列表中)

来自分类Dev

检查键/值对是否存在于另一个对象中

Related 相关文章

  1. 1

    Android Room查询对象具有至少一个存在于另一个列表中的项目

  2. 2

    如何发布具有另一个android库项目依赖项的AAR?

  3. 3

    如何在需要的Android示例中单击将项目从一个列表视图添加到另一个列表视图

  4. 4

    从另一个Android项目调用

  5. 5

    Android Java:从另一个项目返回方法

  6. 6

    您如何将一个项目放在android中另一个项目的后面?

  7. 7

    如何在Android中将对象列表从一个活动传递到另一个活动?

  8. 8

    如何在Android中将对象列表从一个活动传递到另一个活动?

  9. 9

    Android应用程序-在另一个活动中执行某个操作后,从列表中删除项目

  10. 10

    android:从另一个类中的另一个线程更新UI

  11. 11

    如何从另一个线程android访问对象

  12. 12

    如何使一个android库项目依赖另一个库而又没有冲突?

  13. 13

    Python:比较列表中的值(如果存在于另一个列表中)

  14. 14

    如何搜索列表中的数字是否存在于另一个列表中?

  15. 15

    检查列表是否存在于另一个列表中

  16. 16

    强迫存在于内存中的对象指向另一个对象?

  17. 17

    如果同一项目存在于另一个列表中,如何从一个Excel列表中删除它

  18. 18

    如何将另一个android项目的.so文件用于另一个项目

  19. 19

    根据存在于另一个具有不同属性的数组中的存在来过滤数组

  20. 20

    MySQL查询按存在于另一个表中

  21. 21

    MySQL 查询不存在于另一个表中

  22. 22

    mongoose - 查询存在于另一个字段中的字段

  23. 23

    如何将HashSet对象从一个片段传递到android中的另一个片段

  24. 24

    如何判断对象的所有值是否存在于另一个对象中

  25. 25

    Android json解析另一个对象和数组中的对象

  26. 26

    检查一个对象中的项目是否存在于另一个对象中(使用下划线)

  27. 27

    检查一个对象中的项目是否存在于另一个对象中(使用下划线)

  28. 28

    设置属性(如果存在于另一个列表中)

  29. 29

    检查键/值对是否存在于另一个对象中

热门标签

归档