2016-04-11 1 views
0

Existe-t-il une bibliothèque ORM sur Android permettant l'insertion de POJO contenant un champ/collection étranger? Parce que ceux que je trouve (ORMLite pour Android) fonctionne habituellement comme ça:Android ORM permettant d'insérer directement une relation à plusieurs?

  1. Insérer parent
  2. Link en un champ enfant à l'objet parent
  3. Insérer les enfants
  4. Mettre à jour le parent de lui faire inclure les champ étranger

J'ai trouvé mon code moche devoir chercher pour tout l'enfant intérieur. Je voudrais seulement insérer le parent et ensuite l'enfant serait ajouté automatiquement, est-ce possible?

C'est ce que je fais maintenant insérer parent plein de champ étranger non encore inséré:

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); 
    } 
+0

Essayez 'Realm' Cela devrait fonctionner comme vous le voulez. https://realm.io/ –

+0

@Jabbar_Jigariyo Le problème avec Realm est qu'il semble être une peine à utiliser avec Retrofit ... Je devrais écrire un désérialiseur personnalisé et certaines personnes qui les utilisent semblent avoir des problèmes de thread. – Jaythaking

+0

En fait, il n'est pas si douloureux d'utiliser Realm avec rénovation. En outre, ils s'améliorent si rapidement que tout problème que vous pourriez avoir rencontré avant quelques mois a probablement déjà été corrigé. J'utilise Realm + Retrofit avec succès dans une application de production. –

Répondre

0

Check out ONAM (Object Management Nested Access), une bibliothèque sous licence MIT - https://github.com/basilgregory/ONAM4Android.

C'est un simple framework ORM/persistance pour sqlite sous Android. Léger aussi. Prend en charge les relations, y compris la persistance imbriquée, les méthodes de recherche, les transactions et bien plus encore. Divulgation volontaire: Je fais partie de l'équipe qui maintient l'ONAM