ORMLite de nombreux de nombreux de la relation Android

J'ai deux classes :

UniteStratigraphique.java :

    @DatabaseTable(tableName = "unitestratigraphique")
    public class UniteStratigraphique {
    public final static String ID_FIELD_NAME = "id";
        @DatabaseField(generatedId = true, columnName = ID_FIELD_NAME)
        private int id;
    //CAMPAGNES
        @DatabaseField(foreign = true, foreignAutoRefresh = true)
        private Campagne campagne;
        @ForeignCollectionField
        private ForeignCollection<Campagne> listeCampagnes;

public UniteStratigraphique() {}

    public Campagne getCampagne() {
            return campagne;
        }

        public void setCampagne(Campagne campagne) {
            this.campagne = campagne;
        }

        public ArrayList<Campagne> getListeCampagnes() {
            ArrayList<Campagne> campagnesArray = new ArrayList<Campagne>();
            for (Campagne campagne : listeCampagnes) {
                campagnesArray.add(campagne);
            }
            return campagnesArray;
        }

        public ForeignCollection<Campagne> getListeCampagnesForeign() {
            return listeCampagnes;
        }

        public void setListeCampagnes(ForeignCollection<Campagne> listeCampagnes) {
            this.listeCampagnes = listeCampagnes;
        }

    }

Campagne.java :

@DatabaseTable(tableName = "campagne")
public class Campagne {
@DatabaseField(generatedId = true)
    private int id;
//UNITE STRATIGRAPHIQUE
    @ForeignCollectionField
    private ForeignCollection<UniteStratigraphique> listeUniteStratigraphique;
    @DatabaseField(foreign = true, foreignAutoRefresh = true)
    private UniteStratigraphique uniteStratigraphique;
public Campagne() {}

public ArrayList<UniteStratigraphique> getListeUniteStratigraphique() {
        ArrayList<UniteStratigraphique> usArray = new ArrayList<UniteStratigraphique>();
        for (UniteStratigraphique us : listeUniteStratigraphique){
            usArray.add(us);
        }
        return usArray;
    }

    public ForeignCollection<UniteStratigraphique> getListeUniteStratigraphiqueForeign() {
        return listeUniteStratigraphique;
    }

    public void setListeUniteStratigraphique(
            ForeignCollection<UniteStratigraphique> listeUniteStratigraphique) {
        this.listeUniteStratigraphique = listeUniteStratigraphique;
    }

    public int getSizeListeUniteStratigraphique() {
        return listeUniteStratigraphique.size();
    }

    public UniteStratigraphique getUniteStratigraphique() {
        return uniteStratigraphique;
    }

    public void setUniteStratigraphique(UniteStratigraphique uniteStratigraphique) {
        this.uniteStratigraphique = uniteStratigraphique;
    }
}

Comme vous pouvez le voir, ce sont plusieurs-À-Plusieurs lié (0...n---0...n, avec ORMLite annotations).

Maintenant, mon travail est :


- Je créer plusieurs "UniteStratigraphique des classes" et je les stocker dans ma base de données (ce qui fonctionne très bien).

=> j'ai Donc n * "UniteStratigraphique" stockées.

Après que ce que je veux, c'est créer une "Campagne" de la classe qui va contenir plusieurs "UniteStratigraphique" des classes.

=> je veux Donc de définir ce champ d' "Campagne.java" :

 @ForeignCollectionField
    private ForeignCollection<UniteStratigraphique> listeUniteStratigraphique;

avec le n * "UniteStratigraphique" les éléments que je viens stockées avant d'.

J'ai essayé de le faire avec cette méthode DAO mais c'est seulement à reproduire le "UniteStratigraphique" classes dans ma db et aucun lien n'est fait..

 public void addUsToCampagne(Campagne campagne,
            ArrayList<UniteStratigraphique> usArray) {
        ForeignCollection<UniteStratigraphique> usForeign = campagne
                .getListeUniteStratigraphiqueForeign();
        if (usForeign == null) {
            try {
                usForeign = getHelper().getCampagneDao()
                        .getEmptyForeignCollection("listeUniteStratigraphique");

                for (UniteStratigraphique us : usArray) {
                        usForeign.add(us);
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }else{
            for (UniteStratigraphique us : usArray) {
                    usForeign.add(us);
            }
        }

    }

Et dans mon Activité, je suis en train de faire ceci :

db.addCampagne(campagne);

            if( myUniteStratigraphiqueArray.size() > 0){
                    db.addUsToCampagne(campagne, myUniteStratigraphiqueArray);
            }
Pouvez-vous reformater votre code. Tel qu'il est, il n'est pas utile pour les autres.

OriginalL'auteur eento | 2013-08-19