私はUser
とStore
という2つのエンティティを持っています。 User
には多くのStores
(1:M)の関係があります。私はいくつかのストアリストを次のコードによってストアテーブルに挿入しました。DaoException:エンティティがDAOコンテキストからデタッチされました
public void saveStoresToDatabase(Context context, ArrayList<Store> storeList) {
DevOpenHelper helper = new DaoMaster.DevOpenHelper(context, "notes-db", null);
SQLiteDatabase db = helper.getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(db);
DaoSession daoSession = daoMaster.newSession();
StoreDao storeDao = daoSession.getStoreDao();
ArrayList <Store> list = SharedData.getInstance().getUser().getStoreList();
for(int i = 0; i < storeList.size(); i++) {
storeList.get(i).setUserIdForStore(SharedData.getInstance().getUser().getId());
}
storeDao.insertOrReplaceInTx(storeList);
list.addAll(storeList);
user.resetStoreList();
}
私はuser.getStoreList()
を呼び出してみたときに、私は「エンティティがDAOコンテキストから切り離され、」例外を取得しています。例外は、daoSession
がnull
であるため、次のコードでスニップされます。
SharedData
ユーザオブジェクトを有する、私のシングルトンである
public ArrayList<Store> getDMStoreListFromDatabase(Context context) {
return SharedData.getInstance().getUser().getStoreList();
}
:
private SharedData() {
user = new User();
}
、私は次のようsharedData
インスタンスを取得:(User
のような)データベースエントリを表す
public static synchronized SharedData getInstance() {
if (sharedObject == null) {
sharedObject = new SharedData();
}
return sharedObject;
}
ユーザオブジェクトを取得する場所と、user.getStoreList()をどこで呼び出すかに関するコードを入力してください。 storeListがdbに正しく挿入されていますか?選択したユーザーのStoreListがデータベースに存在していますか? – AlexS
私はいくつかのコードを入れて私の質問を編集しました。はい、私はトランザクションで挿入していますが、storeListが挿入されていると確信していますが、リスト要素を1つずつ挿入してチェックしました。ユーザーが1人しかいないので、選択したユーザーのstoreListは、正常に挿入されたのでdbにあると確信しています。データベーステーブルを表示する方法はありますか? –