私はUserとArtworkの2つのクラスを持っています。ユーザーはアートワークのコレクションを持つことができます。すべてが期待どおりに動作し、dbからオブジェクトを格納して取得できますが、コレクションの永続性を理解することはできません。ORMLiteはForeignCollectionをデータベースにどのように格納しますか?
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;
}
私はアートワークをいくつか作成し、それらをコレクションに追加して、そのコレクションをaユーザに設定します。 .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);
オブジェクトが正しく挿入されており、それらのためのクエリは、魔法のように動作します。私が実際に理解していないのは、コレクションのフィールドがない理由です。