0

DB4o ユーザーが 1 つのオブジェクトのみのデータを取得するにはどうすればよいですか?

(これは、従来のリレーショナル データベース テーブルの 1 行のみのデータを取得することに似ています。)

DB4o では、1 つの一意のオブジェクト インスタンスではなく、オブジェクト クラスのデータを取得する方法しか知りません。

4

2 に答える 2

1

オブジェクトをクエリして、結果から最初のアイテムを取得するだけです(リレーショナルデータベースと同じです)

Guid ID で取得するには:

using (IObjectContainer session = this.GetNewSession())
{
    Dummy result = (from Dummy item in session
                    where item.Id == Guid.Parse("....")
                    select item).FirstOrDefault()
}

アイテムが存在しない場合、またはオブジェクトが見つかった場合、結果は null になります。

他のオプションは、次のような内部 ID (または UUID) で直接取得することです。

long id = ....;
using (IObjectContainer session = this.GetNewSession())
{
    Dummy result = (Dummy)session.Ext().GetByID(id);
}

于 2013-03-04T07:20:28.467 に答える
0

私は自分の質問に答えました(私は信じています):

解決策 1:

public List<Object> getListOfObjects(final Object o){

    List<Object> result = db.query(new Predicate<Object>(){

      @Override
      public boolean match (Object arg0){

         if(arg0.equals(o)){
            return true;
          }
        else{
            return false;
         }
    });

    return result;
  }

解決策 2:

public ObjectSet<Class<?>> getListOfObjects(Object o){

      Query q = db.query();
      q.constrain(o);
      ObjectSet<Class<?>> set = q.execute();

  return set;
}

これらのソリューションのいずれかが他のソリューションよりも優れているかどうか、または何でも知っている人がいるかもしれません。

于 2013-03-12T15:48:37.973 に答える