我正在开发新闻应用程序,我遇到以下错误:无法确定如何将此字段保存到数据库中。可以考虑为其添加类型转换器。私人决赛约德戈贝克。科米洛夫。穆索巴卡扬吉利克里。模型Source=null;
在我的SportNews数据库下面。我在其中实现数据库的kt类
@Database(entities = [Article::class], version = 1, exportSchema = false)
abstract class SportNewsDatabase : RoomDatabase() {
abstract fun sportNewsDao(): SportNewsDao
companion object {
private var instance: SportNewsDatabase? = null
fun getInstance( context: Context): SportNewsDatabase? {
if (instance == null) {
synchronized(SportNewsDatabase::class.java) {
instance = Room.databaseBuilder(context.applicationContext, SportNewsDatabase::class.java, "article_database")
.fallbackToDestructiveMigration()
.build()
}
}
return instance
}
}
}
下面是SportNewsDao。kt
interface SportNewsDao {
@Query("SELECT * FROM article")
fun getAllData(): LiveData<List<Article>>
@Insert
suspend fun addAll(article: List<Article>)
@Update
suspend fun updateArticle(article: Article)
@Delete
suspend fun deleteArticle(article: Article)
}
下面是文章。kt
@Entity(tableName = "article")
data class Article(
@ColumnInfo(name = "author") val author: String,
val content: String,
val description: String,
var publishedAt: String,
val source: Source,
val title: String,
val url: String,
val urlToImage: String
)
S以下ource.kt
data class Source(
val id: Any?,
val name: String
) {
}
下面SourceTypeConverters.kt我试图进行转换的地方
object SourceTypeConverters {
@TypeConverter
fun ConvertSource(source: Source?): String? {
return source?.toString()
}
@TypeConverter
fun ConvertSource(source: String?): Source? {
return source?.let { Source(it) }
}
}
我想知道我在哪里犯了错误,我必须做什么,以避免在我的应用程序中出错。
打字机好像有点坏了。让它成为类而不是对象。以JSON字符串形式存储在数据库中并检索它(GSON库可选)。
class SourceTypeConverter {
@TypeConverter
fun fromSource(source: Source): String {
return JSONObject().apply {
put("id", source.id)
put("name", source.name)
}.toString()
}
@TypeConverter
fun toSource(source: String): Source {
val json = JSONObject(source)
return Source(json.get("id"), json.getString("name"))
}
}
现在使用注释TypeConverter
将此类型转换器注册到数据库中。
@Database(entities = [Article::class], version = 1, exportSchema = false)
@TypeConverters(SourceTypeConverter::class)
abstract class SportNewsDatabase : RoomDatabase() {
/* your code here */
}
我有以下型号: 然后告诉我这个错误:
我要用作的数据类如下: My details对象是一个名为的自定义类的列表,其中包含: 此列表中只有一项。正如上面的数据类中提到的,我还为实体中的特定字段指定了一个TypeConzer类。其定义如下: 为了完成我的问题,下面是我的实现: 采用这种方法,我在构建应用程序时会出现以下错误: 甚至我也怀疑出了问题,因为我的IDE没有显示任何地方都可以使用的中的函数。像这样: 我知道很多人过去也在Stac
当我想将我的JSON记录到房间数据库中时,我遇到了一个问题。 我的数据类是: )
文件CrimetypeConverters.kt 错误:错误:无法确定如何将此字段保存到数据库中。可以考虑为其添加一个类型转换器。private java.util.date日期;C:\users\asus\AndroidStudioProjects\CriminalIntentV2\app\build\tmp\kapt3\stubs\debug\com\bignerdranch\android\
当我试图在TaskClass中创建一个实体时,它说它无法将优先级类型保存到数据库中,我遇到了这个错误。Priority是我用几个常量变量创建的枚举类。 我的错误 我搞不清楚到底是什么问题。旁注:我正在看一个android开发课程,我只是跟着指导老师,但他做的同样的事情是给我一个错误,我怎么能修复这个问题? 我的优先枚举类 我的任务课 我的项目等级文件 我的模块GRADLE文件
所以,当我试图编译它时,我得到了这个错误: 我不熟悉房间实施,所以我不知道如何解决这个问题。