ORMLite 如何在数据库中存储 ForeignCollections?

How does ORMLite store ForeignCollections in the database?

我有两个 类,用户和艺术品。用户可以拥有 collection 件艺术品。一切都按预期工作,我可以从数据库中存储和检索 objects,但我不明白它们 collection 是如何持久化的。

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;
}

我创建了一些艺术作品,将它们添加到 collection 并在用户中设置 collection。检查 .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 );

Objects 被正确插入并且查询它们就像魅力一样。我真的不明白的是为什么我没有 collection.

字段

UserArtwork 实体具有 一对多 关系。在关系数据库中,这被建模为 Artwork,其中有一列引用 User(在本例中为 user_id)。要获取与 User (id) 关联的 Artwork 的集合,ormlite 会执行大致如下所示的查询:

select * from Artwork where user_id = id