【发布时间】:2020-08-18 22:37:54
【问题描述】:
面临的问题是从表中获取日历字段。
我的实际数据类是:
@TypeConverters(CalendarConverters::class)
@Entity(tableName = MY_TABLE)
data class MyEpg(
val updatedAt: Calendar,
val epgName: String,
val epgStartTime: Calendar,
val epgEndTime: Calendar,
@ColumnInfo(name = "calendar")
val calendar: Calendar,
val chName: String
) {
@ColumnInfo(name = "id")
@PrimaryKey(autoGenerate = true)
var id: Long = 0
}
我使用类型转换器作为:
object CalendarConverters {
@TypeConverter
@JvmStatic
fun fromTimestamp(value: Long?): Calendar? = value?.let { value ->
GregorianCalendar().also { calendar ->
calendar.timeInMillis = value
}
}
@TypeConverter
@JvmStatic
fun toTimestamp(timestamp: Calendar?): Long? = timestamp?.timeInMillis
}
我使用的查询是:
@Query("select distinct ${MY_TABLE}.calendar from $MY_TABLE order by ${MY_TABLE}.calendar asc")
suspend fun getCalendars(): List<Calendar>
构建视图中显示的错误是
查询返回一些没有被使用的列 [日历] java.lang.对象。您可以在字段上使用 @ColumnInfo 注释 指定映射。您可以通过注释 使用@SuppressWarnings(RoomWarnings.CURSOR_MISMATCH) 的方法。列 查询返回:日历。 java.lang.Object 中的字段:. 公共抽象 java.lang.Object getCalendars(@org.jetbrains.annotations.NotNull()
错误:不确定如何将 Cursor 转换为此方法的返回类型 (java.lang.Object)。 公共抽象 java.lang.Object getCalendars(@org.jetbrains.annotations.NotNull()
注意: 我注意到正在使用转换为 long 的类型转换器,而从 long 转换为 date 没有被使用。
除了单个日历项之外,获取任何单个字段或完整对象都没有任何问题。
【问题讨论】:
-
你能告诉我们你的实体类代码吗?我想你只需要通过添加 @ColumnInfo(name = "your name") 来定义你的列名
-
添加了数据类,我也使用了 columnInfo
标签: android sqlite android-room