Комната: запрос с подзапросом. Как моделировать классы данных?
Я хотел бы выполнить запрос к базе данных комнаты, который приводит к списку записей, которые состоят из столбцов из нескольких таблиц. Сначала у меня есть подзапрос, который затем соединяется с другой таблицей. В результате я выбираю только несколько столбцов. В этом запросе я использую 3 таблицы.
Когда я компилирую проект, я получаю сообщение об ошибке:
Не могу понять, как читать это поле из курсора. private org.joda.time.DateTime creationDate;,
Ошибка указывает на это поле DateTime.
Вот мой интерфейс:
@Dao
interface SomeObjectDao {
@Query (
SELECT a.Id, a.number, b.CreatedDate as createdDate
FROM (SELECT p.*, q.*
FROM tableP AS p, tableQ AS q
WHERE p.userId = q.userId) AS a, table2 AS b
WHERE a.Id = b.someId AND a.position = b.position)
fun getSummary(): List<SomeObjectSummaryDB>
}
и мой пользовательский класс для SomeObjectSummaryDB выглядит так:
class SomeObjectSummaryDB(
var Id: String,
var number: Int,
@TypeConverters(DateTimeConverter::class)
var createdDate: DateTime
)
Я видел несколько примеров, показывающих использование аннотаций @Embedded и @ForeignKey. Это то, что мне нужно в этом случае? Если да, может ли кто-нибудь помочь мне, что нужно, чтобы получить мой список объектов?
Нужно ли создавать модель как для подзапроса, так и для общего результата? Если так, то как бы выглядели эти модели?
Любая помощь очень ценится!
1 ответ
Решил проблему; Проблема в том, что я создал класс с помощью конструктора, но мне нужен был класс со свойствами. Как это:
class SomeObjectSummaryDB {
var id: String = ""
var number: Int = 0
@TypeConverters(DateTimeConverter::class)
var createdDate: DateTime = DateTime()
}
Не то чтобы аннотация @Entity здесь не нужна.