Java 如何使用@Relation注释查询嵌套关系

Java 如何使用@Relation注释查询嵌套关系,java,android,sql,kotlin,android-room,Java,Android,Sql,Kotlin,Android Room,我无法理解如何使用Room@relationship注释查询一对多关系。下面我有一个“能力”实体和一个“能力效果”实体。能力效果对能力有外键,它们之间的关系是一对多(一个能力可以有多个能力效果) 我已经创建了一个数据类 internal data class AbilityWithEffect( @Embedded val ability: Ability, @Relation( parentColumn = "id",

我无法理解如何使用Room@relationship注释查询一对多关系。下面我有一个“能力”实体和一个“能力效果”实体。能力效果对能力有外键,它们之间的关系是一对多(一个能力可以有多个能力效果)

我已经创建了一个数据类

internal data class AbilityWithEffect(
    @Embedded
    val ability: Ability,

    @Relation(
       parentColumn = "id",
       entityColumn = "ability_id"
   )
    val abilityEffect: AbilityEffect?,

据我所知,@relationannotation替换了内部连接,因此您不必手动编写它。现在,我想获得一个AbilityWithEffects列表,其中AbilityEffect.localLanguageId==9。问题是,编写下面这样的查询将无法编译,因为无法识别AbilityEffects,并且使用内部联接和@Relation注释编写此查询会由于@Relation(返回的localLanguageId不是9)而提供不正确的结果。在DB inspector中执行此SQL查询将获得正确的输出

@Transaction
    @Query("SELECT * FROM Abilities WHERE AbilityEffects.localLanguageId == 9")
    suspend fun getAbilityWithEffect(): List<AbilityWithEffect>
@事务
@查询(“从能力中选择*,其中AbilityEffects.localLanguageId==9”)
挂起趣味getAbilityWithEffect():列表
如何使用@Relation查询多个实体并提供正确的结果(或者是否有其他方法)

在未来,我希望扩展我的数据类能力,使其具有更多的关系(每个实体都有一个外键),并且我希望在每个相关实体上都有一些条件

@Transaction
    @Query("SELECT * FROM Abilities WHERE AbilityEffects.localLanguageId == 9")
    suspend fun getAbilityWithEffect(): List<AbilityWithEffect>