kotlin - Room:带有子查询的查询。如何对数据类建模?
问题描述
我想对房间数据库执行查询,结果是一个记录列表,这些记录由几个表中的列组成。首先我有一个子查询,然后与另一个表连接。在结果中,我只选择了几列。在此查询中,我使用 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 注释的示例。这是我在这种情况下需要的东西吗?如果是这样,任何人都可以帮助我获取我的对象列表需要什么?
我需要为子查询和整体结果创建模型吗?如果是这样,这些模型会是什么样子?
任何帮助是极大的赞赏!
解决方案
解决了问题;这里的问题是我用构造函数创建了这个类,但我需要的是一个有属性的类。像这样:
class SomeObjectSummaryDB {
var id: String = ""
var number: Int = 0
@TypeConverters(DateTimeConverter::class)
var createdDate: DateTime = DateTime()
}
并不是说这里不需要 @Entity 注释。
推荐阅读
- javascript - 当数组存储为全局变量时,增加数组的索引不起作用
- node.js - Async/Await:了解 Async/Await 的问题
- r - 有谁知道如何使用 ggplot 在图表上重新标记 x 和 y 轴和图例......还有一种方法可以将条形图堆叠在一起吗?
- c - 将指针值传递给c中的结构
- ios - IOS:AccessoryButtonTapped 导致立即重新加载 tableview 是正常行为吗?
- java - 使用 Lombok 访问私有内部类
- .net-core - 作为 Windows 服务运行时,在 .net core 3 的工作服务中未调用 StopAsync
- r - 循环多个数据帧到ggplot
- java - 插入新行时出现休眠错误:CannotCreateTransactionException:无法打开 JPA EntityManager 进行事务处理
- d3.js - D3鼠标光标周围没有出现