Android 房间正在获取 'incoming foreign key list' 中 'embedded entity' 中元素的数量?
Android Room getting count of elements in an 'incoming foreign key list' in an 'embedded entity'?
我有 2 个实体,Grade
和 Student
,Student
有一个指向 class 房间的 外键 .嵌入式实体 ClassRoom
看起来像这样,
data class ClassRoom(
@Embedded
val level: ClassLevel
@Relation(
parentColumn = "id",
entityColumn = "ClassLevel"
)
val students: List<Student>,
// val strength: Int ?
)
我想要实现的是,使用 ClassRoomInstance.strength
来获取传入外键的计数。比用 students.size
计算学生人数
实现这个的方法是什么?
谢谢
尝试将此查询添加到您的 Dao 中,请参阅 google 个示例:
@Query("SELECT COUNT(column) FROM table")
int getDataCount();
您可以创建一个查询 returns 学生人数。
考虑以下 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
来完成
我有 2 个实体,Grade
和 Student
,Student
有一个指向 class 房间的 外键 .嵌入式实体 ClassRoom
看起来像这样,
data class ClassRoom(
@Embedded
val level: ClassLevel
@Relation(
parentColumn = "id",
entityColumn = "ClassLevel"
)
val students: List<Student>,
// val strength: Int ?
)
我想要实现的是,使用 ClassRoomInstance.strength
来获取传入外键的计数。比用 students.size
实现这个的方法是什么?
谢谢
尝试将此查询添加到您的 Dao 中,请参阅 google 个示例:
@Query("SELECT COUNT(column) FROM table")
int getDataCount();
您可以创建一个查询 returns 学生人数。
考虑以下 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