【发布时间】:2013-05-22 11:19:25
【问题描述】:
我正在制作一个 android 项目并且没有太多 Java 经验。所以我现在能够将对象存储在 db4o 数据库中,我也可以检索所有对象。但是,如果我想获取特定项目的列表,则只有 1 个项目返回(即使还有更多)。
我会告诉你我的代码:
这是访问数据库的代码,应该可以工作。它是 db4oHelper 类中的一个函数
public ObjectContainer db() {
Log.i(Db4oHelper.class.getName(), "Accessing Database...");
if ((Db4oHelper.objectContainer == null) || ((Db4oHelper.objectContainer != null) && Db4oHelper.objectContainer.ext().isClosed())) {
Toast.makeText(this.context, "Creating DB Config", Toast.LENGTH_SHORT).show();
EmbeddedConfiguration c = Db4oEmbedded.newConfiguration();
c.common().objectClass(Event.class).cascadeOnUpdate(true);
c.common().objectClass(Event.class).cascadeOnActivate(true);
c.common().allowVersionUpdates(true);
c.common().detectSchemaChanges(true);
c.common().messageLevel(2);
Db4oHelper.objectContainer = Db4oEmbedded.openFile(c, db4oDBFullPath(this.context));
}
return Db4oHelper.objectContainer;
}
我还有一个 EventProvider 类,它扩展了 db4oHelper 类。编写代码以存储和获取对象的位置。这是即使有更多对象也只返回 1 个对象的函数。 (我是从 db4o 教程 pdf 的例子中制作的)
public List eventsFriday()
{
//function to get events by day (ex all events of friday)
List <Event> events = db().query(new Predicate<Event>() {
public boolean match(Event event) {
return event.getDay().equals("friday");
}
});
return events;
}
所以现在我创建了获取星期五事件的函数,目前有 2 个。但它只返回 1。有人知道吗?
我也想让这个功能工作更多天,例如周五、周六和周日。但是如果我通过函数传递一个字符串,我就不能在新的谓词函数中使用它。
类似这样的:
public List eventsByDay(**String day**)
{
//function to get events by day (ex all events of friday)
List <Event> events = db().query(new Predicate<Event>() {
public boolean match(Event event) {
return event.getDay().equals(**day**);
}
});
return events;
}
【问题讨论】:
-
...获取星期五的事件,目前有 2 个。 你怎么知道的?