如何使用Android中的Room存储和检索array []对象?

时间:2018-03-29 23:18:33

标签: android database android-room

我在Room,Android中看到了大量保存和检索ArrayList的示例。但我找不到如何将经典数组[]对象存储为Room中的字段。当我使用类型转换器时,我得到错误:

“错误:(55,18)错误:不确定如何将Cursor转换为此方法的返回类型” “错误:(61,38)错误:查询方法参数应该是可以转换为数据库列的类型,或者是包含此类型的列表/数组。您可以考虑为此添加类型适配器。”

以下是代码:

数据库文件:

@Database(entities = {UserModel.class}, version = 4)
@TypeConverters({TutorsModelArrayConverter.class})
public abstract class AppDatabase extends RoomDatabase {
   .... Database methods
}

模型文件:

@Entity(primaryKeys = {"user_id"})
public class UserModel {
    private String user_id;  
    private TutorModel[] tutors;
    .... Other parameters

}

转换文件:

public class TutorsModelArrayConverter {

@TypeConverter
public static TutorModel[] toListTutor(String tutorModel) {
    if (tutorModel == null) {
        return null;
    }
    Gson gson = new Gson();
    Type type = new TypeToken<TutorModel[]>() {}.getType();
    return gson.fromJson(tutorModel, type);
}

@TypeConverter
public static String tutorModelToString(TutorModel[] tutorModels) {
    if (tutorModels != null) {
        return new Gson().toJson(tutorModels);
    }else
        return null;
}

}

DAO档案:

@Dao
public interface DAO_DBHelper {

    @Query("SELECT tutors FROM AppData WHERE fake_id = 1")
    TutorModel[] getTutorList();

    ... Other methods
}

我的问题是如何在Room中存储对象的数组[]并在提到之前绕过错误。欢迎任何线索!提前谢谢!

0 个答案:

没有答案