DB4o 用户如何只取回一个对象的数据?
(这类似于仅获取传统关系数据库表的一行的数据。)
使用 DB4o,我只知道如何为一类对象取回数据,而不仅仅是一个唯一的对象实例。
只需查询对象并从结果中获取第一项(与关系数据库相同)
通过 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:
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;
}
也许有人知道这些解决方案中的一个是否比另一个更好,或者其他什么。