Doodle.comに非常によく似た GWT Web アプリケーションを開発しています。
イベントとユーザーに関する情報をデータベースに保存する必要があります。これは大学の試験用のプロジェクトであり、永続データには mapDB を使用する必要があります。問題は、メソッドが呼び出されるたびに、saveEventsToDB()
以前に作成されたデータベースが新しいデータベースによって上書きされることです。
これはsaveEventsToDB()
方法です:
public void saveEventsToDB(Event event) {
DB eventsDB = DBMaker.newFileDB(new File("eventsDB")).closeOnJvmShutdown().make();
Map<Integer, Event> map = eventsDB.getTreeMap("Events");
map.clear();
Set<Integer> keys = map.keySet();
int id=0;
for(int key : keys) {
id++;
}
map.put(id+1, event);
eventsDB.commit();
eventsDB.close();
}
次のコード行が原因であると確信しています。
DB eventsDB = DBMaker.newFileDB(new File("eventsDB")).closeOnJvmShutdown().make();
しかし、これは私たちの教授がmapDBのために私たちに与えたサンプルコードにありました.
mapDB のドキュメントには、次のように書かれていnewFileDB
ます。
ファイルに保存されているデータベースを作成または開きます。
しかし、新しいデータベースは毎回作成されます。いくつかのブレークポイントを使用して、db からデータを抽出しようとすると、毎回 1 つのレコードしか返されませんでした。
誰かがそれを助けることができれば、それは非常にありがたいです. ありがとう