多个 DAO 的 Room runInTransaction
Room runInTransaction for multiple DAO
如何使用Room runInTransaction,
我有多个 table 要插入。
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());
});
我在 运行 此交易时遇到外键约束错误。
运行 逐行工作。但批量插入不适用于多个 table
已使用 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();
}
}
}
}
}
});
如何使用Room runInTransaction, 我有多个 table 要插入。
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());
});
我在 运行 此交易时遇到外键约束错误。 运行 逐行工作。但批量插入不适用于多个 table
已使用 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();
}
}
}
}
}
});