Android RushORM存储请求参数
我正在使用sqlite对象序列化和存储。到目前为止,它的工作相当酷。问题是我不想存储以下Android RushORM存储请求参数,android,android-sqlite,rushorm,Android,Android Sqlite,Rushorm,我正在使用sqlite对象序列化和存储。到目前为止,它的工作相当酷。问题是我不想存储以下请求对象: public class Request extends RushObject { private String url; private RequestParamsStorable params; public Request() {} public Request(String aUrl, RequestParamsStorable aParams)
请求
对象:
public class Request extends RushObject {
private String url;
private RequestParamsStorable params;
public Request() {}
public Request(String aUrl, RequestParamsStorable aParams)
{
this.url = aUrl;
this.params = aParams;
}
public String getUrl()
{
return this.url;
}
public RequestParams getParams()
{
return this.params;
}
}
如您所见,我需要存储RequestParams对象。为了存储它,我显然无法扩展RushObject
我创建了一个子类,并按照文档说明实现了Rush:
public class RequestParamsStorable extends RequestParams implements Rush {
public RequestParamsStorable() {}
@Override
public void save() { RushCore.getInstance().save(this); }
@Override
public void save(RushCallback callback) { RushCore.getInstance().save(this, callback); }
@Override
public void delete() { RushCore.getInstance().delete(this); }
@Override
public void delete(RushCallback callback) { RushCore.getInstance().delete(this, callback); }
@Override
public String getId() { return RushCore.getInstance().getId(this); }
}
它没有抛出任何错误,对Request
对象调用save()。当我要求这样的存储对象时:
List<Request> remainingsInDB = new RushSearch().find(Request.class);
List remainingsInDB=new-RushSearch().find(Request.class);
我确实接收到存储的Request
对象,带有正确的url
,但是requestparamstorable
为空(“”)。我检查并保存它们时,它们肯定有值,并且不是空的
所以问题是我错在哪里
关于,如果您的父类RequestParams包含声明为final的字段,它们将不会被还原
作为参考,您可以查看RushORM源代码
ReflectionClassLoader.java
for(字段:字段){
字段。setAccessible(true);
如果(!annotationCache.get(clazz).getFieldToIgnore()包含(field.getName()){
if(!loadJoinField(对象、列、注释缓存、字段、联接、joinTables)){
if(rushColumns.supportsField(字段)){
字符串值=values.get(计数器);
如果(value!=null&!value.equals(“null”)){
设置字段(对象、字段、值);
}
计数器++;
}
}
}
}
您应该删除字段的final修饰符,或者创建将存储在db中的包装器对象,然后从中恢复RequestParams好的,问题确实是RequestParams中声明为final
的字段@斯图尔特·坎贝尔恰当地指出了参考文献。现在我尝试的解决方法是将所有属性(包装器除外)存储为JSONObject
,将此JSONObject
存储为String
,然后从中恢复状态。我在使用jsonwriter
时遇到了一些问题,但还没有解决我的问题。不确定在这里发布相关代码还是发布新问题是个好主意?您是在扩展RequestParams对象吗?是的。我理解final
问题,并试图解决JSONObject的问题。看看这个,您可以为RequestParams创建一个自定义列类型,并在那里进行序列化和反序列化。