私は 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;
}
また、db4oHelper クラスを拡張する EventProvider クラスもあります。オブジェクトを保存および取得するためのコードが記述されている場所。これは、複数のオブジェクトがあっても 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;
}
だから今私は金曜日のイベントを取得する関数を作成しました。
また、この機能をより多くの日、たとえば金曜日、土曜日、日曜日に機能させたいと思います。しかし、関数で文字列を渡すと、新しい述語関数では使用できません。
このようなもの:
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;
}