Tôi đang sử dụng RoboSpice với Spring cho Android và muốn tồn tại một mảng JSON đối tượng với OrmLite. GSON được sử dụng cho JSON marshalling. Với bộ nhớ đệm mặc định, mọi thứ hoạt động như mong đợi. Nhưng OrmLite dường như không thích mảng các đối tượng.RoboSpice duy trì mảng JSON với OrmLite
Đây là một phiên bản đơn giản của JSON:
[{"id": 1, "title": "Test 1"},{"id": 2, "title": "Test 3"},{"id": 3, "title": "Test 3"}]
Tôi muốn tồn tại này trong đối tượng sau đây:
@DatabaseTable
public class Foo {
@DatabaseField(id = true)
private int id;
@DatabaseField
private String title;
// getters and setters
...
}
Dựa trên ví dụ RoboSpice OrmLite tôi đã tạo ra những điều sau đây GsonSpringAndroidSpiceService lớp để thêm OrmLite CacheManager. Đây là nơi mà vấn đề bắt đầu.
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;
}
}
Điều này dẫn đến các lỗi sau:
RequestProcessor.java:174(22356): java.lang.RuntimeException: Class [Lcom.example.model.Foo; is not handled by any registered factoryList
Khi tôi thay đổi classCollection.add(Foo.class);
-classCollection.add(Foo[].class);
tôi nhận được lỗi sau:
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;
Bất cứ một ý tưởng làm thế nào để xử lý một mảng JSON với OrmLite CacheManager?
Có thể là một bản sao của http://stackoverflow.com/q/15801315/693752 – Snicolas
@Snicolas tôi không muốn giới thiệu một lớp kết quả bổ sung, xem câu trả lời của tôi về cách giải quyết. – Uipko