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.
字段
User 和 Artwork 实体具有 一对多 关系。在关系数据库中,这被建模为 Artwork
,其中有一列引用 User
(在本例中为 user_id
)。要获取与 User
(id) 关联的 Artwork
的集合,ormlite 会执行大致如下所示的查询:
select * from Artwork where user_id = id
我有两个 类,用户和艺术品。用户可以拥有 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.
字段User 和 Artwork 实体具有 一对多 关系。在关系数据库中,这被建模为 Artwork
,其中有一列引用 User
(在本例中为 user_id
)。要获取与 User
(id) 关联的 Artwork
的集合,ormlite 会执行大致如下所示的查询:
select * from Artwork where user_id = id