Android Room允许Dao @Query填充@Ignore列

时间:2019-01-12 00:02:34

标签: android kotlin android-room

我希望我的Dao填充Entity类中的@Ignore列。例如:

实体

testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.0")

Dao

@Entity(tableName = "example")
data class Example(
    @PrimaryKey
    val id: Long,
    val value: Int
) {
    @Ignore
    var nextId: Long = 0L
}

但是,在构建应用程序时,会产生以下警告:  @Dao interface ExampleDao { @Query(value = "SELECT *, (id + 1) AS nextId FROM example") fun getAllExamples(): List<Example> } ,并且不会填充The query returns some columns [nextId] which are not used by com.example.app.Example

是否可以在@Query中包含@Ignore列(如果可以,如何)?如果没有,可以采用哪些策略将表中不存在的列填充到Entity类中。

注意:只要我可以简单地执行以下操作,就可以充分理解该示例:

nextId

但这不是我要问的问题。

1 个答案:

答案 0 :(得分:0)

根据@CommonsWare给我的信息,我采用的解决方案是

data class ExampleWithNextId(
    @Embedded
    val example: Example) {
    var nextId: Long = 0L
}

然后像这样在道中使用它

@Dao
interface ExampleDao {
    @Query(value = "SELECT *, (id + 1) AS nextId FROM example")
    fun getAllExamplesWithNextId(): List<ExampleWithNextId>
}