首页 > 解决方案 > 我如何将我的班级变成房间持久性中的实体?

问题描述

这是我第一次使用 Room Persistence Library,我很难理解实体的概念。

所以我有这两个类:

public class CapturedTime
{

    @SerializedName("startTime")
    @Expose
    private Long startTime;
    @SerializedName("endTime")
    @Expose
    private Long endTime;}

public class CapturedItem implements Parcelable {

private String serialNumber;
private CapturedTime firstCapturedTime;
private CapturedTime secondCapturedTime;}

我相信 CapturedTime 类非常简单,但我不知道应该为 CapturedItem 类做什么。我可以将 CapturedTime 变量放入列中,还是我应该先做一些步骤?

标签: android-room

解决方案


buid.gradle首先在文件中添加依赖

dependencies {
        def room_version = "2.1.0-rc01"

        implementation "androidx.room:room-runtime:$room_version"
        annotationProcessor "androidx.room:room-compiler:$room_version" // For Kotlin use kapt instead of annotationProcessor
}

之后使用@Entity注释将普通 POJO 类声明为 Room 持久性库中的实体。

@Entity(tableName = "your_table_name")
public class CapturedTime{
    @SerializedName("startTime")
    @Expose
    @ColumnInfo(name = "start_time")
    private long startTime;
    @SerializedName("endTime")
    @Expose
    @ColumnInfo(name = "end_time")
    private long endTime;
}

@ColumnInfo用于声明表中的列名,如果不提供@ColumnInfo注解,默认列名是变量名

如果要将自定义对象存储在房间中,请使用 @TypeConverters()注释

在你的情况下,

@TypeConverters(CapturedTime.class)
private CapturedTime firstCapturedTime;

欲了解更多信息,请访问


推荐阅读