DB4o用户如何仅回收一个对象的数据?db4o:我们怎样才能得到只有一个对象的数据?
(这类似于获取数据的传统的关系数据库表中只有一行。)
使用db4o,我只知道如何找回数据的一类对象,但不是简单的一个独特对象实例。
谢谢, 亚历克斯
DB4o用户如何仅回收一个对象的数据?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(例如(或甚至是UUI) d):
long id = ....;
using (IObjectContainer session = this.GetNewSession())
{
Dummy result = (Dummy)session.Ext().GetByID(id);
}
嗨Tomas,感谢您的回复,我相信我已经回答了我的问题,但也许您有进一步的意见。 – 2013-03-12 15:49:36
我已经回答了我的问题(我相信):
解决方案#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;
}
也许有人知道如果其中一种解决方案比另一种更好,或者其他任何解决方案。
在java中,您可以选择使用SODA,QBE或NQ(原生查询)。 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 2013-03-02 10:58:39