房间询问一对多的关系

时间:2018-03-27 13:33:08

标签: android kotlin android-room

我们如何查询与Room有一对多关系的所有实体?

假设我们有用户实体

@Entity
class User(@PrimaryKey(autoGenerate = true) var id: Long?, var name: String)

宠物实体

@Entity(foreignKeys = [(ForeignKey(entity = User::class,
    parentColumns = ["id"],
    childColumns = ["userId"],
    onDelete = ForeignKey.CASCADE))])
public class Pet(@PrimaryKey(autoGenerate = true),
    var name: String,
    var userId: Long?,
    @Ignore var user: User?)

通常我们会查询所有这样的宠物:

@Dao
interface PetsDao {
    @Query("SELECT * FROM pets")
    fun getAll(): Flowable<List<Pet>>
}

但我们如何才能将用户自动附加到宠物对象?就像查询一样:

@Dao
interface PetsDao {
    @Query("SELECT * FROM pets p JOIN users u ON u.id = p.userId")
    fun getAllWithUser(): Flowable<List<Pet>>
}

然后我们可以使用 pet.user.name ,而无需单独查询用户。

1 个答案:

答案 0 :(得分:0)