我设计了一个包含两个实体的模型:ParentEntity
和ChildEntity
。我使用OrmLite将它们存储在数据库中。
我实际上从远程Web服务获取数据。这是我的过程:
此过程适用于简单实体。但是当我尝试管理更复杂的实体时出现问题,例如ForeignCollection
。实际上,我无法实现第4步,因为我无法创建新的ForeignCollection
来将我的子实体放入其中。
我找到了一些答案,说我应该自己存储每个孩子,但它会打破我工作流程的第6步。
所以问题是:
如何在从数据库中获取对象之前初始化ForeignCollection
?
我可以找到改变工作流程的方法。但它只是一种“解决方法”,并且只是为了达到这个目的而创建容器对象......
OrmLite架构(简化)
(班级Entity
只有一个属性id
及其getter / setter。)
ParentEntity
@DatabaseTable(daoClass = ParentEntityDao.class)
public class ParentEntity extends Entity
{
@ForeignCollectionField(eager = true)
private ForeignCollection<TimesheetEntry> entries;
public Collection<TimesheetEntry> getEntries()
{
if(entries != null)
{
return Collections.unmodifiableCollection(entries);
}
else
{
return Collections.unmodifiableCollection(new ArrayList<TimesheetEntry>());
}
}
public void addEntry(ChildEntry childEntry)
{
childEntry.setParent(this);
entries.add(childEntry);
}
public void removeEntry(ChildEntry childEntry)
{
entries.remove(childEntry);
}
}
ChildEntity
@DatabaseTable(daoClass = ChildEntityDao.class)
public class ChildEntry extends Entity
{
@DatabaseField(foreign = true, canBeNull = false)
private ParentEntity parentEntity;
public void setParentEntity(ParentEntity parentEntity)
{
this.parentEntity = parentEntity;
}
public ParentEntity getParentEntity()
{
return parentEntity;
}
}
JSON架构(简化)
父实体
public class JsonParentEntity
{
private List<JsonChildEntity> entries;
// Getter/setter
}
子实体
public class JsonChildEntity
{
private String name;
// Getter/setter
}