Ich benutze RoboSpice mit Spring für Android und möchte ein JSON-Array von Objekten mit Ormlite persistieren. GSON wird für das JSON-Marshalling verwendet. Mit dem Standard-Caching funktioniert alles wie erwartet. Aber OrmLite scheint das Array von Objekten nicht zu mögen.RoboSpice persistent JSON-Array mit Ormlite
Dies ist eine vereinfachte Version des JSON:
[{"id": 1, "title": "Test 1"},{"id": 2, "title": "Test 3"},{"id": 3, "title": "Test 3"}]
ich dies in dem folgende Objekt bestehen bleiben möchte:
@DatabaseTable
public class Foo {
@DatabaseField(id = true)
private int id;
@DatabaseField
private String title;
// getters and setters
...
}
Basierend auf dem RoboSpice OrmLite Beispiel ich folgende erstellt habe GsonSpringAndroidSpiceService-Klasse zum Hinzufügen des OrmLite CacheManagers. Hier beginnt das Problem.
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;
}
}
Dies führt zu dem folgenden Fehler:
RequestProcessor.java:174(22356): java.lang.RuntimeException: Class [Lcom.example.model.Foo; is not handled by any registered factoryList
Als ich classCollection.add(Foo.class);
-classCollection.add(Foo[].class);
bekomme ich folgende Fehler ändern:
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;
jemand eine Idee wie ein JSON-Array zu handhaben mit dem OrmLite CacheManager?
ein Duplikat http://stackoverflow.com/q/15801315/693752 – Snicolas
@Snicolas sein Darf ich möchte nicht vorstellen Eine zusätzliche Ergebnisklasse finden Sie in meiner Antwort zur Problemumgehung. – Uipko