Bonjour,
voila j'ai le modèle physique des données suivants:
Drapeau(pays,image)
Associer(#pays,#numquizz,sens)
Quizz(numero)

Comme vous pouvez le voir j'ai une clé primaire composer avec des clé étrangère.
J'ai générer les modeles suivant:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
@DatabaseTable(tableName = "drapeau")
public class Drapeau {
 
    @DatabaseField(id = true)
    private String pays;
 
    @DatabaseField
    private String image;
 
 
    public Drapeau() {
    }
 
 
    public Drapeau(String pays, String image) {
        this.pays = pays;
        this.image = image;
    }
 
    public String getPays() {
        return pays;
    }
 
    public String getImage() {
        return image;
    }
 
    public void setPays(String pays) {
        this.pays = pays;
    }
 
    public void setImage(String image) {
        this.image = image;
    }
 
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
@DatabaseTable(tableName="quizz")
public class Quizz {
 
 
    @DatabaseField (generatedId = true)
    private int numero;
 
 
    //Constructeur sans arguments obligatoire
    public Quizz(){
 
    }
 
 
    //Getter pour le numero du quizz
    public int getNumero() {
        return numero;
    }
 
 
    public void setNumero(int numero) {
        this.numero = numero;
    }
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
@DatabaseTable(tableName = "associer")
public class Associer {
 
 
    @DatabaseField(canBeNull = false, foreign = true, foreignAutoRefresh = true, uniqueCombo = true)
    Drapeau drapeaux;
 
    @DatabaseField(canBeNull = false, foreign = true, foreignAutoRefresh = true, uniqueCombo = true)
    Quizz quizzs;
 
    @DatabaseField
    private int sens;
 
    public Associer() {
    }
 
    public Associer(Drapeau drapeaux, Quizz quizzs, int sens) {
        this.drapeaux = drapeaux;
        this.quizzs = quizzs;
        this.sens = sens;
    }
 
    public int getSens() {
        return sens;
    }
 
    public Drapeau getDrapeaux() {
        return drapeaux;
    }
 
    public Quizz getQuizzs() {
        return quizzs;
    }
 
 
    public void setDrapeaux(Drapeau drapeaux) {
        this.drapeaux = drapeaux;
    }
 
    public void setQuizzs(Quizz quizzs) {
        this.quizzs = quizzs;
    }
 
    public void setSens(int sens) {
        this.sens = sens;
    }
}
Je ne c'est pas trop comment dire au modèle associer que les clés étrangère composer sont primaire.
De plus voici ma connexion:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
 
public class DBConnection extends OrmLiteSqliteOpenHelper{
 
    public Dao<Drapeau, String> daoDrapeau;
 
    public Dao<Quizz, Integer> daoQuizz;
 
    public Dao<Associer, Pair<Drapeau, Quizz>> daoAssocierPair;
 
    //CONSTRUCTEUR qui initialise nos Dao
    public DBConnection(Context context, String databaseName, SQLiteDatabase.CursorFactory factory, int databaseVersion) {
        super(context, databaseName, factory, databaseVersion);
 
        Log.i("DATABASE","Constructeur DBConnection invoked");
 
    }
 
 
    //CREATION des tables de notre bases de données
    @Override
    public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) {
 
        try {
 
            TableUtils.createTable(connectionSource, Drapeau.class);
 
            TableUtils.createTable(connectionSource, Quizz.class);
 
            TableUtils.createTable(connectionSource, Associer.class);
 
        } catch (SQLException e) {
            e.printStackTrace();
        }
 
        Log.i("DATABASE","Création des tables ok");
 
    }
 
 
    @Override
    public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) {
        try {
            TableUtils.dropTable(connectionSource, Associer.class,true);
 
            TableUtils.dropTable(connectionSource, Drapeau.class, true);
 
            TableUtils.dropTable(connectionSource, Quizz.class, true);
 
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
 
    public Dao<Drapeau, String> getDaoDrapeau() throws SQLException{
        if (daoDrapeau == null){
            daoDrapeau = getDao(Drapeau.class);
        }
        return daoDrapeau;
    }
 
    public Dao<Quizz, Integer> getDaoQuizz() throws SQLException {
        if (daoQuizz == null) {
            daoQuizz = getDao(Quizz.class);
        }
        return daoQuizz;
    }
 
    public  Dao<Associer, Pair<Drapeau, Quizz>> getDaoAssocierPair() throws SQLException {
        if (daoAssocierPair == null){
            daoAssocierPair = getDao(Associer.class);
        }
        return daoAssocierPair;
    }
}
J'aimerai peupler ma base via le MainActivity:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        DBConnection dbConnection = new DBConnection(this, "newbase.db", null, 1);
 
        Drapeau allemagne = new Drapeau("Allemagne","http://www.geognos.com/api/en/countries/flag/FR.png");
 
        Quizz quizz2 = new Quizz();
 
 
        try {
            dbConnection.getDaoDrapeau().createIfNotExists(allemagne);
 
            dbConnection.getDaoQuizz().createIfNotExists(quizz2);
           // DBConnection.daoAssocierPair.createIfNotExists(associer);
        } catch (SQLException e) {
            e.printStackTrace();
        }
 
        Associer associer = new Associer();
        associer.setDrapeaux(allemagne);
        associer.setQuizzs(quizz2);
        associer.setSens(1);
        try {
            dbConnection.getDaoAssocierPair().createIfNotExists(associer);
        } catch (SQLException e) {
            e.printStackTrace();
        }
Mes tables Drapeau et Quizz ce remplisse bien, mais je n'arrive pas à remplir la table associer, pouvez-vous m'aider.
Merci