Ich habe zwei Entitäten, User
und Store
. User
hat viele Stores
(1: M) Beziehung. Ich habe einige Speicherliste in die Geschäftstabelle eingefügt, indem ich Code folge.DaoException: Die Entität ist vom DAO-Kontext getrennt
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();
}
Ich erhalte Ausnahme „Einheit von DAO Kontext gelöst wird“, wenn ich user.getStoreList()
versuchen zu nennen. Die Ausnahme tritt bei dem folgenden Code auf, der ausgeschlossen wird, da die daoSession
null
ist.
public ArrayList<Store> getDMStoreListFromDatabase(Context context) {
return SharedData.getInstance().getUser().getStoreList();
}
wo SharedData
meine Singleton ist, ein Benutzerobjekt mit:
private SharedData() {
user = new User();
}
und ich erhalte die sharedData
Instanz wie folgt:
public static synchronized SharedData getInstance() {
if (sharedObject == null) {
sharedObject = new SharedData();
}
return sharedObject;
}
Bitte geben Sie einen Code darüber, wo Sie das Benutzerobjekt erhalten und wo Sie user.getStoreList() aufrufen. Sind Sie sicher, dass die storeList korrekt in Ihre db eingefügt wurde? Sind Sie sicher, dass für den ausgewählten Benutzer eine StoreList in der Datenbank vorhanden ist? – AlexS
Ich habe meine Frage bearbeitet, indem ich etwas Code eingefügt habe, ja, ich bin sicher, dass die storeList eingefügt wird, obwohl ich in die Transaktion einfüge, aber ich habe es auch überprüft, indem ich die Listenelemente nacheinander eingefügt habe. Es gibt nur einen Benutzer, also bin ich sicher, dass die storeList für den ausgewählten Benutzer in der Datenbank ist, da sie erfolgreich eingefügt wurde. Gibt es eine Möglichkeit, die Datenbanktabellen anzuzeigen? –