[英]android Room. how can I get the data class with columns returned by the query does not have the fields
我想从查询中获取我的数据 class属性isActivated
具有默认值false
这是目标实体
@Entity(tableName = "MY_ENTITY")
data class MyEntity(
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "A") val a: Long = 0,
@ColumnInfo(name = "B") val b: String
)
这是我想从查询中获取的数据 class
data class MyDataClass(
@ColumnInfo(name = "A") val a: Long,
@ColumnInfo(name = "B") val b: String,
var isActivated: Boolean = false // this is the problem I want to solve
)
这是房间道中的查询
@Query(SELECT A, B FROM MY_ENTITY)
fun getEntity(): List<MyDataClass>
属性isActivated
在普通数据 class 不在房间实体数据 class 中
错误信息在这里
error: The columns returned by the query does not have the fields [isActivated] in MyDataClass
even though they are annotated as non-null or primitive. Columns returned by the query: [A, B]
public abstract java.lang.Object loadAllGroupVOs(@org.jetbrains.annotations.NotNull()
我自己解决了这个问题,但我不知道这是个好主意。
我改变了我的查询,如下所示
从
@Query(SELECT A, B FROM MY_ENTITY)
fun getEntity(): List<MyDataClass>
至
@Query(SELECT A, B, 0 as IS_ACTIVATED FROM MY_ENTITY)
fun getEntity(): List<MyDataClass>
而数据class也变成了这样。
从
data class MyDataClass(
@ColumnInfo(name = "A") val a: Long,
@ColumnInfo(name = "B") val b: String,
var isActivated: Boolean = false // this is the problem I want to solve
)
至
data class MyDataClass(
@ColumnInfo(name = "A") val a: Long,
@ColumnInfo(name = "B") val b: String,
@ColumnInfo(name = IS_ACTIVATED) var isActivated: Boolean = false
)
如果您不想像这样使用它,可以将 @Ignore 用于 isActivated:
data class MyDataClass(
@ColumnInfo(name = "A") val a: Long,
@ColumnInfo(name = "B") val b: String,
@Ignore
var isActivated: Boolean = false
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.