[ORMLite-débutant] Relation many-to-many, queryBuilder qui ne trouve pas les bons résultats
Bonjour les gens
j'ai comme un léger soucis avec ORMLite et j'espère trouver un peu d'aide.
Dans mon modèle de données j'ai deux entités Utilisateur et Question liées entre elles par une relation many to many nommée Score.
Leur implémentation est la suivante:
Code:
1 2 3 4 5 6 7 8 9
| @DatabaseTable(tableName = "Utilisateur", daoClass = UtilisateurDao.class)
public class Utilisateur {
@DatabaseField(generatedId = true)
private int id;
@DatabaseField(columnName=UtilisateurDao.COL_LOGIN)
private String login;
@ForeignCollectionField(eager=false)
private ForeignCollection<Score> scores;
(...) |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| @DatabaseTable(tableName = "Question", daoClass = QuestionDao.class)
public class Question {
@DatabaseField(generatedId = true)
private int id;
@DatabaseField(canBeNull = false)
private String texte;
@DatabaseField(canBeNull = false, foreign = true)
private Sujet sujet;
@ForeignCollectionField(columnName = QuestionDao.COL_REPONSE, eager = false)
private ForeignCollection<Reponse> reponses;
@ForeignCollectionField(eager = false)
private ForeignCollection<Score> scores;
(...) |
et pour la many to many
Code:
1 2 3 4 5 6 7 8 9 10 11
| @DatabaseTable(tableName = "Score", daoClass = ScoreDao.class)
public class Score {
@DatabaseField(generatedId=true)
private int id;
@DatabaseField(foreign=true, columnName=ScoreDao.COL_USER)
private Utilisateur user;
@DatabaseField(foreign=true, columnName=ScoreDao.COL_QUESTION)
private Question question;
@DatabaseField
private int niveauMaitrise;
(...) |
Mon problème est le suivant: je cherche à retrouver un score tel que score.utilisateur== un utilisateur donné et score.question== une question donnée. Pour ce faire j'utilise la méthode suivante:
Code:
1 2 3 4 5 6 7 8 9 10 11
| public Score findByUserAndQuestion(Utilisateur user, Question question)
throws SQLException {
QueryBuilder<Score, Integer> qBuilder = queryBuilder();
qBuilder.where().eq(COL_QUESTION, question);
qBuilder.where().eq(COL_USER, user);
List<Score> result = qBuilder.query();
if (result.size() > 0) {
return result.get(0);
}
return null;
} |
j'ignore pourquoi, mais, quand j'utilise cette méthode, je trouve un résultat qui n'est pas le bon. Ainsi, si je cherche un score avec une question telle que question.id==10, je trouve un score avec une question.id==11 je fais donc appel au publique, quelqu'un aurait-il une vague idée de la bêtise que j'ai pu faire pour que ça parte ainsi en sucettes?
D'avance merci