ActiveAndroid优化相关表

ActiveAndroid optimization relative tables

我有使用 ActiveAndroid ORM 的应用程序,我需要保存带有内部列表和对象的模型列表,如下所示:

public class MyModel extends Model{
 @Expose
 @SerializedName(Columns.COLUMN_CREATED_AT)
 @Column(name=Columns.COLUMN_CREATED_AT)
 private Date createdAt;
  .... and other fields

 @Expose
 @SerializedName(Columns.User)
 public User users;
 .... another objects
}

所以,当前保存的逻辑List<MyModel>接下来做:

1) 在 ActiveAndroid.beginTransaction() / ActiveAndroid.endTransaction();

中进行所有更新

2) 对于每个 MyModel user model 从数据库中检索,更新和保存

3) 每个 MyModel 从数据库中检索,更新并保存

所以整个过程大概需要7-9秒。

由于 user(和其他内部对象)在不同的 MyModel 对象中可能是相同的,所以我接下来要执行以下操作:

在保存 MyModel 的循环中,我得到 users 并将其放入 HashMap,所以我得到了 唯一用户列表 并在 MyModel 更新后保存。 (但相同的交易)。现在它保存数据 3-4 秒。

但是,看起来 ActiveAndroidMyModelUser table 之间做了一些引用,所以当我试图从 table 中删除用户时,我得到了一个异常:

FOREIGN KEY constraint failed

那么,我该如何处理呢?

由于过去 3 年不支持 ActiveAndroid...我的解决方案是迁移到另一个 orm。 反对 ActiveAndroid 的另一个理由 - is slower than others