db4o:我们如何只获取一个对象的数据?

时间:2013-03-02 01:13:22

标签: db4o

DB4o用户如何只获取一个对象的数据?

(这类似于只获取传统关系数据库表的一行数据。)

使用DB4o,我只知道如何为一类对象获取数据,而不仅仅是一个唯一的对象实例。

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分: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;
}

也许有人知道这些解决方案中的一个是否比另一个更好,或者其他什么。