Комната runInTransaction для нескольких DAO - PullRequest
0 голосов
/ 11 января 2019

Как пользоваться Room runInTransaction, У меня есть несколько таблиц для вставки.

database.runInTransaction(() -> {
                        database.getMemberDAO().insert(response.body().getMembers());
                        database.getPostDAO().insert(response.body().getPosts());
                        database.getCommentDAO().insert(response.body().getComments());
                        database.getLikeDAO().insert(response.body().getLikes());
                        database.getPostImageDAO().insert(response.body().getPostImages());
                    });

При выполнении этой транзакции я получаю сообщение об ошибке ограничения внешнего ключа. Бегущая строка за строкой работает. но массовая вставка не работает для нескольких таблиц

1 Ответ

0 голосов
/ 11 января 2019

Исправлено с помощью try-catch-finally

database.runInTransaction(() -> {
                        try {
                            database.getMemberDAO().insert(response.body().getMembers());
                        } catch (Exception e) {
                            e.printStackTrace();
                        } finally {
                            try {
                                database.getPostDAO().insert(response.body().getPosts());
                            } catch (Exception e) {

                                e.printStackTrace();
                            } finally {
                                try {
                                    database.getCommentDAO().insert(response.body().getComments());
                                } catch (Exception e) {
                                    e.printStackTrace();
                                } finally {
                                    try {
                                        database.getLikeDAO().insert(response.body().getLikes());
                                    } catch (Exception e) {
                                        e.printStackTrace();
                                    } finally {
                                        try {
                                            database.getPostImageDAO().insert(response.body().getPostImages());
                                        } catch (Exception e) {
                                            e.printStackTrace();
                                        } finally {
                                            database.endTransaction();

                                        }
                                    }
                                }
                            }
                        }

                    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...