У меня есть:
@ForeignCollectionField(eager = false)
private ForeignCollection<Field> fieldCollection;
и я хочу заполнить эту коллекцию из данных, поступающих из веб-службы, потому что я хочу вставить эти данные в свою базу данных Sqlite.
Я попытался использовать это:
boolean accessOnPremiseDb = false;
String description;
@ForeignCollectionField(eager = false)
private ForeignCollection<Entity> entitiyCollection =
new LazyForeignCollection<Entity, Integer>(null, accessOnPremiseDb,
accessOnPremiseDb, null, description, accessOnPremiseDb);
но я получил ошибку
Caused by: java.lang.IllegalStateException: Internal DAO object is null.
Lazy collections cannot be used if they have been deserialized.
Как я могу сделать это без проблем? Должен ли я использовать для этого новую переменную?
... Я хочу заполнить эту коллекцию из данных, поступающих из веб-службы, потому что я хочу вставить эти данные в свою базу данных Sqlite.
Правильно. Сообщение об ошибке сериализации вводит в заблуждение. Вы пытаетесь создать чужую коллекцию, и вы не можете напрямую вызвать конструктор. Вы должны вместо этого звонить
dao.assignEmptyForeignCollection(data, "entitiyCollection");
или
data.entitiyCollection = dao.getEmptyForeignCollection("entitiyCollection");
Это прокладывает соответствующий DAO-объект в чужую коллекцию. Я улучшил javadocs и сообщение об ошибке.
https://github.com/j256/ormlite-core/commit/b4037999c21f45c426ce7a83bc759e3ec8335c61