Android用のSpringでRoboSpiceを使用しています。OrmLiteでオブジェクトのJSON配列を永続化したいと考えています。 GSONはJSONマーシャリングに使用されます。デフォルトのキャッシュでは、すべてが期待通りに機能します。しかしOrmLiteはオブジェクトの配列が気に入らないようです。RoboSpiceはOrmLiteを使用したJSON配列を継承します
これは、JSONの簡易版である:
[{"id": 1, "title": "Test 1"},{"id": 2, "title": "Test 3"},{"id": 3, "title": "Test 3"}]
私は、次のオブジェクトでこれを持続したいと思います:RoboSpice OrmLiteの例に基づいて
@DatabaseTable
public class Foo {
@DatabaseField(id = true)
private int id;
@DatabaseField
private String title;
// getters and setters
...
}
私は次のように作成しましたOrmLite CacheManagerを追加するGsonSpringAndroidSpiceServiceクラス。これが問題の始まりです。
public class CustomGsonSpringAndroidSpiceService extends GsonSpringAndroidSpiceService
{
@Override
public CacheManager createCacheManager(Application application)
{
// add persisted classes to class collection
List<Class<?>> classCollection = new ArrayList<Class<?>>();
classCollection.add(Foo.class);
// init
CacheManager cacheManager = new CacheManager();
cacheManager.addPersister(new InDatabaseObjectPersisterFactory(
application, new RoboSpiceDatabaseHelper(
application, "database.db", 1), classCollection));
return cacheManager;
}
}
これは、次のエラーが発生:私は変更
RequestProcessor.java:174(22356): java.lang.RuntimeException: Class [Lcom.example.model.Foo; is not handled by any registered factoryList
classCollection.add(Foo.class);
からclassCollection.add(Foo[].class);
私は次のエラーを取得 :JSON配列を処理するための方法を
RequestProcessor.java:174(22601): 14:42:23.112 pool-5-thread-1 An unexpected error occured when processsing request CachedSpiceRequest [requestCacheKey=foo, cacheDuration=-1, [email protected]]
RequestProcessor.java:174(22601): java.lang.IllegalArgumentException: No fields have a DatabaseField annotation in class [Lcom.example.app.model.Foo;
誰でもアイデアをOrmLite CacheManagerを使用していますか?
は、私が紹介したくないhttp://stackoverflow.com/q/15801315/693752 – Snicolas
@Snicolasの重複している可能性があり追加の結果クラス、回避策について私の答えを参照してください。 – Uipko