2013-03-02 16 views
0

Как пользователи DB4o могут вернуть данные только для одного объекта?db4o: как мы можем получить данные только для одного объекта?

(Это похоже на получение данных только для одной строки традиционной таблицы реляционной базы данных.)

С db4o, я только знаю, как получить данные обратно для класса объектов, но не просто один уникальный объект.

Спасибо, Alex

+1

В java вы можете использовать SODA, QBE или NQ (Native Queries). http://community.versant.com/documentation/reference/db4o-8.0/java/reference/Content/basics/querying.htm http://community.versant.com/documentation/reference/db4o-7.12/java /api/com/db4o/ObjectContainer.html#query(com.db4o.query.Predicate) – Vagaus

ответ

1

только объекты запроса и получить первый элемент из результата (тот же, как и в реляционной базе данных)

, чтобы получить его Guid ID:

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

в результат будет либо null, если элемент не существует, либо объект найден

другой вариант - получить его напрямую с помощью внутреннего идентификатора, например (или даже UUI D):

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

+0

Привет, Томас, спасибо за ваш ответ, я считаю, что ответил на мой вопрос, но, возможно, у вас есть дополнительный вклад. –

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; 
} 

Может кто-то знает если одно из этих решений лучше, чем другое, или что-то еще.