【发布时间】:2016-04-11 13:44:20
【问题描述】:
Android 上是否有允许插入包含外部字段/集合的 POJO 的 ORM 库?因为我发现的那些(Android 的 ORMLite)通常是这样工作的:
- 插入父项
- 将子字段链接到父对象
- 插入孩子
- 更新父项,让他包含那些外来字段
我发现我的代码很丑,不得不寻找所有内在的孩子。我想只需要插入父项,然后自动添加子项,这可能吗?
这就是我现在要做的插入充满尚未插入的外部字段的父项:
CategoriesDAO.getInstance().addOrUpdate(categories);
for (EntityCategories.EntityCategory currentCategory : new ArrayList<>(categories.getCategories())) {
if (currentCategory.getmPlans() != null) {
for (EntityPlan myPlan : new ArrayList<>(currentCategory.getmPlans())) {
EntityPlan oldPlan = PlanDAO.getInstance().queryById(String.valueOf(myPlan.getmId()));
myPlan.setCategories(currentCategory);
if (oldPlan != null) {
if (!myPlan.getmDateModification().equals(oldPlan.getmDateModification())) {
PlanDAO.getInstance().addOrUpdate(myPlan);
}
} else {
PlanDAO.getInstance().addOrUpdate(myPlan);
}
}
} else {
continue;
}
LabelDAO.getInstance().addOrUpdate(currentCategory.getmLabel());
currentCategory.setCategories(categories);
CategoryDAO.getInstance().addOrUpdate(currentCategory);
}
【问题讨论】:
-
试试
Realm。它应该以您想要的方式在那里工作。 realm.io -
@Jabbar_Jigariyo Realm 的问题是,使用 Retrofit 看起来很痛苦......我必须编写一个自定义反序列化器,而一些使用它们的人似乎都有线程问题。
-
其实用 Realm 进行改造并没有那么痛苦。此外,它们的改进速度如此之快,以至于您在几个月前可能遇到的任何问题都可能已经得到解决。我在生产应用程序中成功使用 Realm + Retrofit。
-
@Jabbar_Jigariyo 你有没有找到一些很好的例子链接?我确实想尝试一下,但我很难找到示例...我也在使用 Jackson 进行数据绑定,您认为是否也需要更改?
-
我想你已经阅读了整个页面:realm.io/docs/java/latest 和 Realm github 项目中的所有示例应用程序。这肯定会给你一个良好的开端。
标签: android sqlite ormlite pojo