Комната: запрос с подзапросом.Как моделировать классы данных? - PullRequest
0 голосов
/ 27 октября 2018

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

Когда я компилирую проект, я получаю сообщение об ошибке:

Не могу понять, как читать это поле с курсора. private org.joda.time.DateTime создалDate; .

Ошибка указывает на это поле 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 Ответ

0 голосов
/ 29 октября 2018

решена проблема;Проблема в том, что я создал класс с помощью конструктора, но мне нужен был класс со свойствами.Например:

class SomeObjectSummaryDB {
  var id: String = ""
  var number: Int = 0
  @TypeConverters(DateTimeConverter::class)
  var createdDate: DateTime = DateTime()
}

Не то, чтобы аннотация @Entity здесь не нужна.

...