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 : Sélectionner tout - Visualiser dans une fenêtre à part
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; (...)et pour la many to many
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; (...)
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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; (...)
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?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
D'avance merci
Partager