这是第一次使用Room数据库,我想将数据保存到嵌套类中
植物种类:
@Entity
data class Plant(
@PrimaryKey var id:Long,
@ColumnInfo (name="plant_name") var name: String,
@ColumnInfo(name ="plant_type") var type: Plant_Category,
@ColumnInfo(name= "plant_image") var image: Int,
) {
}
这是植物类别类:
@Entity
data class Plant_Category(
@PrimaryKey var id: Int =0,
@ColumnInfo(name="plant_type_name") var type:String ="",
@ColumnInfo(name="plant_type_water")var water_time: String ="",
@ColumnInfo(name="plant_type_details")var details: String = "",){
}
我试着用
@TypeConverter or @SerializedName
但这些注释似乎不可用也许我缺少了一个库?
这是我的gradle文件:
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.core:core-ktx:1.3.2'
implementation 'androidx.appcompat:appcompat:1.2.0'
//Room database
implementation "androidx.room:room-runtime:2.3.0"
implementation "androidx.room:room-ktx:2.3.0"
kapt "androidx.room:room-compiler:2.3.0"
//coroutines
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.2'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.2'
//Viewmodel
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1"
//LiveData
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1"
//ui
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
//navigation
implementation 'androidx.navigation:navigation-fragment-ktx:2.2.2'
implementation 'androidx.navigation:navigation-ui-ktx:2.2.2'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
//views
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'androidx.cardview:cardview:1.0.0'
//testing
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}
我将感谢你的帮助!
如果您计划插入,则更容易:
@Entity
data class Plant(
@PrimaryKey var id:Long,
@ColumnInfo (name="plant_name") var name: String,
@ColumnInfo(name ="plant_type") var type: Plant_Category,
@ColumnInfo(name= "plant_image") var image: Int,
@ColumnInfo(name="plant_type_name") var type:String ="",
@ColumnInfo(name="plant_type_water")var water_time: String ="",
@ColumnInfo(name="plant_type_details")var details: String = "",
) {
}
如果您想为类别设置一个特定的实体,在其中插入新的工厂类型,您也可以使用此实体。
@Entity
data class Plant_Category(
@PrimaryKey var id: Int =0,
@ColumnInfo(name="plant_type_name") var type:String ="",
@ColumnInfo(name="plant_type_water")var water_time: String ="",
@ColumnInfo(name="plant_type_details")var details: String = "",){
}
这将更容易管理:)
我要用作的数据类如下: My details对象是一个名为的自定义类的列表,其中包含: 此列表中只有一项。正如上面的数据类中提到的,我还为实体中的特定字段指定了一个TypeConzer类。其定义如下: 为了完成我的问题,下面是我的实现: 采用这种方法,我在构建应用程序时会出现以下错误: 甚至我也怀疑出了问题,因为我的IDE没有显示任何地方都可以使用的中的函数。像这样: 我知道很多人过去也在Stac
文件CrimetypeConverters.kt 错误:错误:无法确定如何将此字段保存到数据库中。可以考虑为其添加一个类型转换器。private java.util.date日期;C:\users\asus\AndroidStudioProjects\CriminalIntentV2\app\build\tmp\kapt3\stubs\debug\com\bignerdranch\android\
当我想将我的JSON记录到房间数据库中时,我遇到了一个问题。 我的数据类是: )
当我试图在TaskClass中创建一个实体时,它说它无法将优先级类型保存到数据库中,我遇到了这个错误。Priority是我用几个常量变量创建的枚举类。 我的错误 我搞不清楚到底是什么问题。旁注:我正在看一个android开发课程,我只是跟着指导老师,但他做的同样的事情是给我一个错误,我怎么能修复这个问题? 我的优先枚举类 我的任务课 我的项目等级文件 我的模块GRADLE文件
所以,当我试图编译它时,我得到了这个错误: 我不熟悉房间实施,所以我不知道如何解决这个问题。
我有以下型号: 然后告诉我这个错误: