我必须创建一个帐户才能提出这个问题,因为我找不到正确的方法。唯一接近的是这里的问题,但它并没有完全解决,我仍然陷入困境。开始了...
我正在尝试构建一个遵循尽可能多的架构组件原则的应用程序。我目前正在尝试在一个数据库表中添加一行,并获取该行的 ID 作为返回,然后在另一个表中插入一行,并引用第一个表。
我已经创建了我的数据库对象:
@Entity(indices = {@Index("id")})
public class Search {
@PrimaryKey(autoGenerate = true) private int id;
...
Run Code Online (Sandbox Code Playgroud)
以及对应的DAO:
@Dao
public interface SearchDao {
@Insert
long insert(Search search);
...
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我的 DAO 返回一个带有创建的 ID 的长整型值。这是我之前链接的问题中指出的行为,并记录在此处。
由于我遵循 Android 架构组件原则,因此我使用 Repository 类来完成所有与数据库相关的工作。在此存储库中,我创建了一个公共方法来插入一个新对象,该方法创建并执行一个 AsyncTask 来完成这项工作:
public class Repository {
public void insertSearch(Search search) {
new insertSearchAsyncTask(this.mSearchDao).execute(search);
}
...
private static class insertSearchAsyncTask extends AsyncTask<Search, Void, Long> {
private SearchDao mAsyncTaskDao;
insertSearchAsyncTask(SearchDao dao) {
this.mAsyncTaskDao = dao;
} …Run Code Online (Sandbox Code Playgroud)