Java 如何使用@Relation注释查询嵌套关系
我无法理解如何使用Room@relationship注释查询一对多关系。下面我有一个“能力”实体和一个“能力效果”实体。能力效果对能力有外键,它们之间的关系是一对多(一个能力可以有多个能力效果) 我已经创建了一个数据类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",
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>