使用Room联接查询

时间:2018-07-10 12:58:37

标签: android sqlite android-room android-architecture-components

我有两个会议室实体:

UserServices userServices=new UserServices();
List<UserModel> users=userServices.getAllUsers();

现在我正在尝试进行JOIN以获得这样的对象:

@Entity(tableName = LocationsTable.NAME)
data class LocationDto(@PrimaryKey val timestamp: Long,
                   val latitude: Double,
                   val longitude: Double,
                   val altitude: Double)

@Entity(tableName = TripsTable.NAME)
data class TripDto(@PrimaryKey(autoGenerate = true) val _id: Long,
               val startTime: Long,
               val endTime: Long)

位置必须包含行程实体的开始时间和结束时间之间的locationDtos。该查询应类似于:

data class TripWithLocationDto(val startTime: Long,
                        val endTime: Long,
                        val locations: List<LocationDto>)

所有文章仅描述了使用外键的实现。 谁知道如何使其工作?

1 个答案:

答案 0 :(得分:1)

您要在要连接的实体类中创建外键,然后再创建另一个实体类,在该实体类中将要连接的两个表的字段都放入其中,并像上面在dao中一样进行连接查询。您也可以检查以下链接。在多对多关系标签中

https://android.jlelse.eu/android-architecture-components-room-relationships-bf473510c14a

您还可以访问以下位于Kotlin中的链接:-

http://danielgaribaldi.com/room-persistence-library-part-2-room-relationships/