我在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中存储对象的数组[]并在提到之前绕过错误。欢迎任何线索!提前谢谢!