Вложенные ForeignCollections всегда пустые с плагином RoboSpice и OrmLite
Я почти уверен, что это скорее вопрос OrmLite, чем RoboSpice, но, поскольку собственный кэш файлов прекрасно хранит данные, я публикую это с плагином OrmLite для RoboSpice. Моя проблема в том, что вложенные иностранные коллекции всегда пусты. Я имею в виду, когда JSON анализируется (без ошибок), таблицы не заполняются.
Ниже мой JSON и модель. Первый контейнер "Рецепты" прекрасно работает как Зарубежная Коллекция Рецептов. "фото" тоже хорошо. Проблема в "URL", я их настроил так же, как и ForeignCollection, но таблица БД всегда пуста.
Я могу получить доступ к данным из моего dbhelper и вручную выполнить запросы.update (), чтобы заполнить таблицы, но это, кажется, лишает цели иметь плагин, поэтому я предполагаю, что я делаю что-то не так. Какие-нибудь мысли?
Вот JSON, который я пытаюсь кэшировать с помощью RoboSpice/OrmLite.
{
"recipes": [
{
"recipeID": 25508,
"type": "recipes",
"title": "titel 1",
"photo": {
"photoID": 753228,
"urls": [
{
"url": "http://images.x.com/userphotos/50x50/753228.jpg",
"height": 50,
"width": 50
},
{
"url": "http://images.x.com/userphotos/110x110/753228.jpg",
"height": 110,
"width": 110
},
{
"url": "http://images.x.com/userphotos/140x140/00/75/32/753228.jpg",
"height": 140,
"width": 140
},
{
"url": "http://images.x.com/userphotos/250x250/00/75/32/753228.jpg",
"height": 250,
"width": 250
}
]
},
"ratingAverage": 4.26,
"ratingCount": 122,
"reviewCount": 97,
"submitter": {
"userID": 0,
"name": "name 1",
"isPro": false,
"photo": {
"urls": [
{
"url": "http://images.x.com/global/profile/nophoto/noprofile-50x50.png",
"height": 50,
"width": 50
},
{
"url": "http://images.x.com/global/profile/nophoto/noprofile-110x110.png",
"height": 110,
"width": 110
},
{
"url": "http://images.x.com/global/profile/nophoto/noprofile-140x140.png",
"height": 140,
"width": 140
},
{
"url": "http://images.x.com/global/profile/nophoto/noprofile-250x250.png",
"height": 250,
"width": 250
}
]
}
},
"videoID": 3205,
"links": {
"parent": {
"href": "https://apps.beta.x.com/v1/recipes/25508"
}
}
},
{
"recipeID": 214802,
"type": "recipes",
"title": "title 2",
"photo": {
"photoID": 662782,
"urls": [
{
"url": "http://images.x.com/userphotos/50x50/662782.jpg",
"height": 50,
"width": 50
},
{
"url": "http://images.x.com/userphotos/110x110/662782.jpg",
"height": 110,
"width": 110
},
{
"url": "http://images.x.com/userphotos/140x140/00/66/27/662782.jpg",
"height": 140,
"width": 140
},
{
"url": "http://images.x.com/userphotos/250x250/00/66/27/662782.jpg",
"height": 250,
"width": 250
}
]
},
"ratingAverage": 4.61,
"ratingCount": 18,
"reviewCount": 13,
"submitter": {
"userID": 0,
"name": "name 2",
"isPro": false,
"photo": {
"urls": [
{
"url": "http://images.x.com/global/profile/nophoto/noprofile-50x50.png",
"height": 50,
"width": 50
},
{
"url": "http://images.x.com/global/profile/nophoto/noprofile-110x110.png",
"height": 110,
"width": 110
},
{
"url": "http://images.x.com/global/profile/nophoto/noprofile-140x140.png",
"height": 140,
"width": 140
},
{
"url": "http://images.x.com/global/profile/nophoto/noprofile-250x250.png",
"height": 250,
"width": 250
}
]
}
},
"videoID": 0,
"links": {
"parent": {
"href": "https://apps.beta.x.com/v1/recipes/214802"
}
}
}
]
}
А вот и родственные модели:
@JsonIgnoreProperties(ignoreUnknown = true)
@DatabaseTable
public class Photo {
// id is generated by the database and set on the object automagically
@JsonIgnore
@DatabaseField(columnName = "id", generatedId = true)
int id;
@JsonIgnore
@DatabaseField(foreign = true, foreignAutoCreate = true, foreignAutoRefresh = true)
private Recipe recipe;
@JsonProperty("urls")
@ForeignCollectionField(eager = false)
Collection<PhotoUrl> urls;
public Photo() {
// needed by Jackson/OrmLite, DO NOT REMOVE!
}
// Getters setters omitted...
@JsonIgnoreProperties(ignoreUnknown = true)
public class PhotoUrl {
// id is generated by the database and set on the object automagically
@JsonIgnore
@DatabaseField(columnName = "id", generatedId = true)
int id;
@JsonIgnore
@DatabaseField(foreign = true, foreignAutoCreate = true, foreignAutoRefresh = true)
private Photo photo;
@JsonProperty("url")
@DatabaseField(columnName = "url")
private String url;
@JsonProperty("height")
@DatabaseField(columnName = "height")
private float height;
@JsonProperty("width")
@DatabaseField(columnName = "width")
private float width;
public PhotoUrl() {
// needed by Jackson/OrmLite, DO NOT REMOVE!
}
// Getters setters omitted...