je en regardant à travers des parties du official db4o tutorial, et je suis en train de faire une modification du code qu'ils vous donnent pour les requêtes en natif:problème avec db4o (java) lors de l'exécution d'une requête
//the original
List<Pilot> pilots = db.query(new Predicate<Pilot>() {
public boolean match(Pilot pilot) {
return pilot.getPoints() == 100;
}
});
//modified
List<Pilot> pilots = db.query(new Predicate<Pilot>() {
public boolean match(Pilot pilot) {
return pilot.getGames() >= 100;
}
});
Je l'ai ajouté à leur classe pilote:
//in declarations
private ArrayList<String> games;
//modified constructors
public Pilot() {
this.name=null;
this.points=0;
}
public Pilot(String name,int points) {
this.name=name;
this.points=points;
this.games = new ArrayList<String>();
int numGames = (int) (Math.random() * 1000 + 1);
for(int i=0;i<numGames;i++) {
this.games.add(name=" vs Computer");
}
}
//new method
public int getGames() {
return games.size();
}
Je l'ai déjà peuplé une base de données avec 500 objets en utilisant le second constructeur, et toutes les données dans la db semble correct avec l'addon éclipse OME. J'ai testé getGames() et cela fonctionne comme prévu.
Mon problème est que lorsque j'exécute la requête modifiée, elle renvoie tous les objets dans la base de données et je ne comprends pas pourquoi. J'ai essayé de changer la requête pour inclure un plus standard si vrai, sinon la structure fausse et changeant la requête pour inclure exigeant un certain nombre de points en vain. Quoi que je fasse, il semble qu'il évalue toujours (pilot.getGames()> = 100) pour être vrai.
Quelqu'un peut-il m'aider à comprendre pourquoi?
Merci beaucoup, monsieur! – fusion2004