android - 无法弄清楚如何将此字段保存到数据库中。您可以考虑为其添加类型转换器
问题描述
文件犯罪.kt
@Entity
data class Crime (@PrimaryKey val id: UUID = UUID.randomUUID(),
var title: String = "",
var date: Date = Date(),
var isSolved: Boolean = false)
文件犯罪类型转换器.kt
class CrimeTypeConverters {
@TypeConverter
fun fromDate(date: Date?): Long?{
return date?.time
}
@TypeConverter
fun toDate(millisSinceEpoch: Long?): Date? {
return millisSinceEpoch?.let {
Date(it)
}
}
@TypeConverter
fun toUUID(uuid: String?): UUID? {
return UUID.fromString(uuid)
}
@TypeConverter
fun fromUUID(uuid: UUID?): String? {
return uuid?.toString()
}
}
错误:错误:无法弄清楚如何将此字段保存到数据库中。您可以考虑为其添加类型转换器。私有 java.util.Date 日期;C:\Users\ASUS\AndroidStudioProjects\CriminalIntentv2\app\build\tmp\kapt3\stubs\debug\com\bignerdranch\android\criminalintent\database\CrimeDatabase.java:8:警告:未向注释提供架构导出目录处理器,因此我们无法导出架构。您可以提供room.schemaLocation
注释处理器参数或将 exportSchema 设置为 false。public abstract class CrimeDatabase extends androidx.room.RoomDatabase { ^[WARN] 请求增量注释处理,但由于以下处理器不是增量的,支持被禁用:androidx.room.RoomProcessor (NON_INCREMENTAL)。
任务 :app:kaptDebugKotlin 失败
解决方案
您是否将转换器与数据库链接
@Database(
entities = [
Crime::class, ...
]
)
@TypeConverters(
//...
CrimeTypeConverters::class
)
abstract class CrimeDatabase : RoomDatabase() {
//...
}
您可以查看文档,有一种方法可以逐个在实体上使用它,但我现在找不到参考。
我认为说明问题的关键字是:
...Cannot figure out how to save this field into database. You can consider adding a type converter for it. ...\CrimeDatabase.java:8: warning: Schema export directory is not provided to the annotation processor...
推荐阅读
- reactjs - 当我从 Reactjs 中的 graphql 查询中获取字段时,它不起作用
- service-fabric-stateful - 通过在 Service Fabric 中的 Web API 控制器中做出的决定从 RunAsync() 强制返回
- xslt - 将子节点循环并拆分为多个子节点
- google-apps-script - 使用脚本在不破坏 Google 表格中的公式的情况下获取、修改、设置值
- symfony - 如何正确地将日期转换为字符串并以 symfony 形式返回,以便可以使用日期选择器
- python - 我怎样才能打印出来,以便每个实例的属性都在一行上?
- mysql - 即使使用 utf8mb4_unicode_ci 在 django + mysql 中输入表情符号也会失败
- java - 使用 java 的动态调度程序
- android - 适用于 Android 的 Xamarin 窗体渐变按钮
- azure-ad-b2c - 如何在 Azure B2C TechnicalProfile 中禁用“呼叫我”按钮