【问题标题】:Android ORM allowing directly insert one to many relation?Android ORM允许直接插入一对多关系?
【发布时间】:2016-04-11 13:44:20
【问题描述】:

Android 上是否有允许插入包含外部字段/集合的 POJO 的 ORM 库?因为我发现的那些(Android 的 ORMLite)通常是这样工作的:

  1. 插入父项
  2. 将子字段链接到父对象
  3. 插入孩子
  4. 更新父项,让他包含那些外来字段

我发现我的代码很丑,不得不寻找所有内在的孩子。我想只需要插入父项,然后自动添加子项,这可能吗?

这就是我现在要做的插入充满尚未插入的外部字段的父项:

    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


【解决方案1】:

查看 ONAM(对象嵌套访问管理),一个 MIT 许可库 - https://github.com/basilgregory/ONAM4Android

这是一个简单的 ORM / 持久化框架,用于 Android 中的 sqlite。也很轻。支持关系,包括嵌套持久性、查找器方法、事务等等。

(自愿披露:我是维护 ONAM 团队的一员)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    • 2015-03-16
    • 2022-12-18
    相关资源
    最近更新 更多