Присоединение к запросу с помощью Room

У меня есть две сущности Room:

@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)

И теперь я пытаюсь выполнить JOIN, чтобы получить такой объект:

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

Locations должны содержать locationDtos между временем начала и окончания объекта поездки. Запрос должен выглядеть примерно так:

SELECT trips_table.start_time, trips_table.end_time FROM trips_table JOIN locations_table WHERE locations_table.timestamp >= trips_table.start_time AND locations_table.timestamp <= trips_table.end_time

Все статьи описывают реализацию только с внешними ключами. Кто знает как заставить работать?

4
0
5 225
1

Ответы 1

Вы создаете внешние ключи в классе сущности, к которому хотите присоединиться, а после этого создаете другой класс сущности, в котором вы берете поле обеих таблиц, к которым вы присоединяетесь, и помещаете запрос на соединение, как вы сделали выше в dao. Вы также можете проверить ссылку ниже. во многих тегах отношений

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

Вы также можете перейти по ссылке ниже, которая находится в котлине: -

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

Другие вопросы по теме