Комната: запрос с подзапросом. Как моделировать классы данных?

Я хотел бы выполнить запрос к базе данных комнаты, который приводит к списку записей, которые состоят из столбцов из нескольких таблиц. Сначала у меня есть подзапрос, который затем соединяется с другой таблицей. В результате я выбираю только несколько столбцов. В этом запросе я использую 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 здесь не нужна.

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