Как я могу заполнить иностранную коллекцию вручную

1

У меня есть:

@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.

Как я могу сделать это без проблем? Должен ли я использовать для этого новую переменную?

Теги:
ormlite
foreign-collection

1 ответ

4
Лучший ответ

... Я хочу заполнить эту коллекцию из данных, поступающих из веб-службы, потому что я хочу вставить эти данные в свою базу данных Sqlite.

Правильно. Сообщение об ошибке сериализации вводит в заблуждение. Вы пытаетесь создать чужую коллекцию, и вы не можете напрямую вызвать конструктор. Вы должны вместо этого звонить

dao.assignEmptyForeignCollection(data, "entitiyCollection");

или

data.entitiyCollection = dao.getEmptyForeignCollection("entitiyCollection");

Это прокладывает соответствующий DAO-объект в чужую коллекцию. Я улучшил javadocs и сообщение об ошибке.

https://github.com/j256/ormlite-core/commit/b4037999c21f45c426ce7a83bc759e3ec8335c61

  • 0
    если я использую Collection <Entity> вместо ForeignCollection <Entity> и заполняю данные с помощью ArrayList, у меня могут возникнуть проблемы?
  • 0
    Есть ли массовое создание для этого? Я смущен тем, как данные заканчивают тем, что были вставлены ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню