java - Android Room 在 'incoming foreign key list' 中获取 'embedded entity' 中的元素计数?

标签 java android kotlin android-room android-room-relation

我有 2 个实体,GradeStudent , Student有一个 外键 走向教室。嵌入式实体 ClassRoom看起来像这样

data class ClassRoom(

    @Embedded
    val level: ClassLevel

    @Relation(
        parentColumn = "id",
        entityColumn = "ClassLevel"
    )
    val students: List<Student>,

    // val strength: Int ?

) 
我想要实现的是,使用 ClassRoomInstance.strength获取传入外键的计数。比使用 students.size 计算学生的大小
实现这一目标的方法是什么?
谢谢

最佳答案

您可以创建一个返回学生人数的查询。
考虑以下 POJO、电影和预告片

@Entity
data class Movie(
    @PrimaryKey
    val id: Int,
    val title: String,
    val overview: String
)
@Entity
data class Trailer(
    @PrimaryKey
    val id: Int,
    val movieId: Int,
    val trailerPath: String
)
想象一下,我想获得带有预告片数量的电影
data class MoviesWithTrailerCount(
    @Embedded
    val movie: Movie,
    val trailerCount: Int
)
在 MovieDAO 中,我可以创建一个查询:
@Transaction
@Query("SELECT M.*, COUNT(T.id) AS trailerCount FROM Movie M INNER JOIN Trailer T ON T.movieId = M.id WHERE M.id = :id")
abstract suspend fun moviesAndTrailersCount(id: Int): MoviesWithTrailerCount
因此,基本上您想要实现的目标可以使用 SQL 查询和 @Embedded 来完成。

关于java - Android Room 在 'incoming foreign key list' 中获取 'embedded entity' 中的元素计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66027179/

相关文章:

Android 2.1 View 的 getDrawingCache() 方法总是返回 null

kotlin - IntelliJ 编译器关于为 varargs 传播空数组的警告

java - lateinit 属性模拟对象尚未初始化

Android Kotlin "withTimeout"协程如何处理异常

java - 用户登录JSP的信息——DAO和servlet

java - 当 </ScrollView> 放在末尾时应用程序崩溃

java - 通过GSON转换后如何获取对象的字段key?

java - 将 CompletableFuture<Stream<T>> 转换为 Publisher<T> 是否正确?

java - 如何确保这是我的类签名中引用的泛型类型?

java - 如何在执行JAR时外部向spring boot提供mysql主机