领域(kotlin):查询具有子对象列表的对象,其中至少有一个子对象具有非空字段

领域(kotlin):查询具有子对象列表的对象,其中至少有一个子对象具有非空字段,kotlin,realm,Kotlin,Realm,我有以下型号 @RealmClass open class Sport (@PrimaryKey open var sportId: Long = 0, //... open var events: RealmList<Event> = RealmList(), ) : RealmObject() @RealmClass open class Event( @PrimaryKey var

我有以下型号

    @RealmClass
    open class Sport (@PrimaryKey open var sportId: Long = 0,
          //...
          open var events: RealmList<Event> = RealmList(),
    ) : RealmObject()

    @RealmClass
    open class Event(
        @PrimaryKey var id: Long = 0L,
        //...
        open var defaultGame: Game? = null
    ) : RealmObject()
如何更改我的查询以获取体育项目列表,其中每个体育项目至少有一个
defaultGame
字段不为空的事件


谢谢

如果此应用程序尚未投入生产,您可以做的一个好技巧是添加一个字符串
defaultGameId
字段,因为字符串将支持
isNotNull
。然后当设置了
defaultGame
时,还要设置
defaultGameId
值。应用程序还没有投入生产,我喜欢这个技巧。这不是“最干净”的解决方案,但足够干净。谢谢

    fun getSports(): RealmResults<Sport> = realm.where(Sport::class.java)
            .isNotNull("events.defaultGame")
            .distinct("sportId")
            .sort(orderSportFields, orderSport)
            .findAll()
java.lang.IllegalArgumentException: Illegal Argument: isNotNull() by nested query for link field is not supported.