通过嵌套的RealmList项的属性进行过滤

时间:2018-01-12 16:22:23

标签: android realm realm-mobile-platform realm-list

我在编写查询以执行我想要的操作时遇到了问题 - 因为我不确定它是否可以从我的知识库中获得,我想我在这里问一个问题。我知道其他方法可以做到这一点,但我试图编写一个查询,这将导致我能够将查询用作托管对象,我已经提出的其他解决方案赢得了提供。这就是问题所在:

我有一个SiteInfo和Level模型,它保存了网站以及相关的级别:

open class SiteInfo(
    var orgId: Int = INVALID_ID,
    @PrimaryKey var id: Int = INVALID_ID,
    var site: Site = Site(),
    var levels: RealmList<Level> = RealmList()) : RealmObject()

open class Level(@PrimaryKey var id: Int = INVALID_ID,
                 var building: String = "",
                 var floor: String = "",
                 var site_id: Int = INVALID_ID,
                 var floorplan_url: String? = null) : RealmObject()

我试图过滤网站,其中级别列表不是空的,而且我已经走得那么远了:

realm.where(SiteInfo::class.java).not().isEmpty("levels").findAllAsync()

但是,要使网站有效,其中至少有一个级别必须具有非null的floorplan_url。我不确定是否有支持此功能的查询语法。如果有人能告诉我这是否可能,那就太棒了 - 否则我就会解决这个问题。

1 个答案:

答案 0 :(得分:0)

你试过吗

realm.where(SiteInfo::class.java)
     .isNotEmpty("levels")
     .isNotNull("levels.floorplan_url")        
     .findAllAsync()