У меня есть два класса, User and Artwork. Пользователь может иметь коллекцию произведений искусства. Все работает так, как ожидалось, я могу хранить и извлекать объекты из db, но я не понимаю, как они сохраняются.Как ORMLite хранит ForeignCollections в базе данных?
public class User {
@DatabaseField(allowGeneratedIdInsert = true, generatedId = true, unique = true)
Long id;
@DatabaseField
String name;
@DatabaseField(columnName = "artwork_id", foreign = true, foreignAutoCreate = true, foreignAutoRefresh = true)
Artwork masterPiece;
@ForeignCollectionField(eager = true)
Collection<Artwork> artworks;
}
public class Artwork {
@DatabaseField(allowGeneratedIdInsert = true, generatedId = true, unique = true)
Long id;
@DatabaseField
String name;
@DatabaseField
String file;
@DatabaseField(columnName = "user_id", foreign = true, foreignAutoCreate = true, foreignAutoRefresh = true)
User owner;
}
Я создаю некоторые работы, добавляю их в коллекцию и устанавливаю коллекцию в Пользователь. При проверке .db (.schema) Я получаю это:
CREATE TABLE android_metadata (locale TEXT);
CREATE TABLE `user` (`id` INTEGER PRIMARY KEY AUTOINCREMENT , `name` VARCHAR , `artwork_id` BIGINT);
CREATE TABLE `artwork` (`id` INTEGER PRIMARY KEY AUTOINCREMENT , `name` VARCHAR , `file` VARCHAR , `user_id` BIGINT);
Объекты быть правильно и запрашивая для них работает как шарм. Я действительно не понимаю, почему у меня нет поля для коллекции.