IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

ORMLite & ForeignCollection


Sujet :

Android

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 172
    Points : 70
    Points
    70
    Par défaut ORMLite & ForeignCollection
    Bonjour à tous,

    J'utilise ORMLite dans mon appli, je sais également utiliser les ForeignCollection mais de facon "basique", cad :

    - l'objet parent possede une ForeignCollection(eager = true)
    - l'objet foreign possede un champ vers le parent tel que :
    @DatabaseField(canBeNull = false, foreign = true, foreignAutoRefresh = true)

    Le probleme se situe au niveau de l'insertion de la ForeignCollection ; n'ayant pas de constructeur valide pour créer une une foreignCollection vide, j'ai l'impression d'être obligé de passer par la phase :
    mDao.assignEmptyForeignCollection(agency, "lesHoraires");

    Or :
    - ceci implique d'avoir deja inséré le parent en bdd
    - pr ensuite créer une ForeignCollectoin vide
    - puis la fill
    - avec chaque add() correspondant à une entrée en base...

    Autant dire que tout cela est TRéS couteux :/

    Dans mon application, j'ai des objets contenant une ForeignCollection qui elle même contient une foreignCollection qui elle même contient une foreignColletcion...
    Soit "3 niveaux" de ForeignCollection

    Et c'est ici que le bas blesse car je me retrouve à insérer chaque objet en base un par un pour pouvoir faire un assignEmptyForeignCollection dessus...

    Et niveau perfs c'est monstrueux....

    Malheureusement la ForeignCollection ne supporte pas le @DatabaseField(foreignAutoCreate = true)

    Par conséquent, connaitriez vous un moyen me permettant de créer mes objets, foreignCollections inclues SANS passer par la phase assignEmptyForeignCollection() et ainsi pouvoir insérer mes objets "tels quels"

    Le but etant de n'avoir qu'une unique boucle d'insertion des objets du plus haut niveau (des agences) au sein d'un callBatchTasks

    D'avance merci !

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 172
    Points : 70
    Points
    70
    Par défaut
    Et bien finalement cela fonctionne dans la batchTask :
    http://ormlite.com/javadoc/ormlite-c...tch-Operations

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dao.callBatchTasks(new Callable<Void>() {
        public Void call() throws Exception {
            for (Account account : accountsToInsert) {
                accountDao.create(account);
                dao.assignEmptyForeignCollection();
                account.getForeignCollection().addAll(mList2insert); // mListToInsert etant filled lors du parsing
            }
        }
    });
    Merci moi-même

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo