0

プログラムを介してデータを取得しようとしているときに、いくつかの問題に直面しています。データベースとして objectDB を使用しています。また、データベースは既にセットアップされており、objectDB インストールの db フォルダーに laptop.odb ファイルをドロップしました。また、エクスプローラーに移動してクエリを実行すると、次のようになります。

select this.modelName == "HP Pavillion"

正しい結果が出ます。しかし、次のように自分のコードで同じことをしようとすると

public static void main(String argv[]) {
PersistenceManager pm = Utilities.getPersistenceManager("laptop.odb"); System.out.println("-- TEST --\n");
Query query = pm.newQuery(Laptop.class,"this.modelName == \"HP Pavillion\""); Collection result = (Collection)query.execute(); System.out.println("Result is >> "+result);

ここでは結果は返されません。私の出力は次のとおりです。
-- TEST find --

結果は >> []

クラスの私のコードは次のとおりです。

    package com.project;

    import java.util.*;

    import javax.annotation.processing.Processor;
    import javax.jdo.*;

    import com.objectdb.Utilities;

    public class Laptop {

        String modelName; // key

public static void main(String argv[]) {
        PersistenceManager pm = Utilities.getPersistenceManager("laptop.odb");
        System.out.println("-- TEST find --\n");
        Query query = pm.newQuery(Laptop.class,"this.modelName == \"HP Pavillion\"");
        Collection result = (Collection)query.execute();
        System.out.println("Result is >> "+result);

}

助言がありますか ?

4

1 に答える 1

1

その理由は、「laptop.odb」が存在しない ObjectDB データベースを参照している可能性があります。その場合、新しいデータベースが自動的に作成されます。新しいデータベースは空で作成されるため、クエリから結果は返されません。

既存のデータベースへの絶対パスを指定してみてください。

于 2012-05-13T11:30:37.940 に答える