我的模型类
List<String> _photo_array;
因为我可以在String Class上添加注释,是否可以使用ormLite来保存它?
答案 0 :(得分:8)
因为我可以在String Class上进行anotation是否可以使用ormLite来保持它?
您将不得不创建一个包裹String
的实体。类似的东西:
@DatabaseTable
public class Photo {
@DatabaseField(generatedId = true)
private int id;
@DatabaseField
private String photo;
@DatabaseField(foreign = true)
private Model model;
}
然后你的模特类会有ForeignCollection
张这些照片。
@DatabaseTable
public class Model {
@DatabaseField(generatedId = true)
private int id;
@ForeignCollectionField()
private ForeignCollection<Photo> photos;
}
答案 1 :(得分:0)
解决此问题的一种方法是使用一对多关系。
要保持一对多关系,您可以使用ForeignCollection。 Check the docu.
据我所知,ORMLite不支持其他类型的集合。
另一点是您需要在引用的Object中进行反向引用。 要将字段标记为反向引用,请使用注释@DatabaseField(foreign = true,...)
对于场景A(1) - &gt; B(n)的
class A {
@DatabaseField(generatedId = true, columnName = BaseColumns._ID)
public int _id;
@ForeignCollectionField(eager = true)
public ForeignCollection<B> _photo_array;
}
class B {
@DatabaseField(generatedId = true, columnName = BaseColumns._ID)
public int _id;
@DatabaseField(foreign = true, canBeNull = false,
foreignAutoRefresh = true, foreignAutoCreate = true)
public A a;
}
在此方案中,参考B以一对多的方式进行。如果将加载a,则还将加载所有相关B(因为eager = true)
要保存此结构,您可以使用这种方式(我希望您已经创建了ADao和BDao类):
final A a = ...;
final ADao aDAO = ...;
aDAO.createOrUpdate(a);
final ArrayList<B> children = ...;
final BDao bDAO = ...;
for (final B b: children ) {
bDAO.create(season);
}
将存储包含依赖关系的A和B.如果您现在尝试从db获取A,您还将获得与A实例相关的所有B。