室:使用子查询进行查询。如何为数据类建模?

时间:2018-10-27 10:37:56

标签: kotlin subquery android-room data-class

我想在一个会议室数据库上执行查询,以产生记录列表,该记录由几个表中的列组成。首先,我有一个子查询,然后与另一个表联接。结果,我只选择了几列。在此查询中,我使用3个表。

编译项目时出现错误消息:

无法弄清楚如何从光标读取此字段。私有org.joda.time.DateTime createdDate;

错误指向此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 :(得分:0)

解决了问题;这里的问题是我用构造函数创建了类,但是我需要的是带有属性的类。像这样:

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

不是这里不需要@Entity注释。