我有两个课程,用户和艺术品。用户可以拥有艺术品的集合。一切都按预期工作,我可以存储和检索数据库中的对象,但我不明白他们的收集是如何保持的。
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 );
正确插入对象并查询它们就像魅力一样。我真正不明白的是为什么我没有收集领域的原因。
答案 0 :(得分:1)
用户和图稿实体具有一对多关系。在关系数据库中,这被建模为Artwork
,其列引用User
(在这种情况下为user_id
)。要获取与Artwork
(id)关联的User
的集合,ormlite会执行大致类似的查询:
select * from Artwork where user_id = id