如果用户只能在一个组中,那么user:group是多对一关系.
@Entity(tableName="user")
data class UserEntity(
@PrimaryKey(autoGenerate = true)
val uid: Int,
val username: String,
val groupId: Int
...
)
@Entity(tableName="group")
data class GroupEntity(
@PrimaryKey(autoGenerate = true)
val gid: Int,
val name: String,
)
我可以使用POJO和左连接进行查询,这样:
data class UserWithGroup(
@Embedded
val user: UserEntity,
@Embedded
val group: GroupEntity,
)
@Dao
interface UserDao {
@Transaction
@Query("SELECT * FROM `user` u LEFT JOIN `group` g ON u.group_id = g.id")
fun getAllUserWithGroup(): List<UserWithGroup>
}
是否有可能在userWithGroup中使用@Relation来获取用户群组?似乎互联网上的大多数示例都是通过用户列表获取群组,如何才能获得与@Relation相关群组的用户,就像下面的代码一样?
data class UserWithGroup(
@Embedded
val user: UserEntity,
@Relation(
parentColumn = "gid",
entityColumn = "groupId",
)
val group: GroupEntity
)
@Dao
interface UserDao {
@Transaction
@Query("SELECT * FROM `user`")
fun getAllUserWithGroup(): List<UserWithGroup>
}