私は公式のdb4oチュートリアルの一部をざっと見ていて、ネイティブクエリを実行するためにそれらが提供するコードに変更を加えようとしています。
//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;
}
});
私はこれを彼らのパイロットクラスに追加しました:
//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();
}
2番目のコンストラクターを使用してデータベースに500個のオブジェクトを既に入力しましたが、データベース内のすべてのデータはOMEeclipseアドオンで正しく表示されます。getGames()をテストしましたが、期待どおりに機能します。
私の問題は、変更されたクエリを実行すると、データベース内のすべてのオブジェクトが返され、その理由がわからないことです。trueの場合はより標準的な構造を含めるようにクエリを変更し、それ以外の場合はfalseの構造を含めるようにクエリを変更し、無駄になるまで一定量のポイントを要求するようにクエリを変更してみました。私が何をするにしても、それは常に(pilot.getGames()> = 100)が真であると評価しているようです。
誰かが理由を理解するのを手伝ってくれますか?