0

Ich habe die App, die ActiveAndroid ORM verwendet und ich brauche Liste der Modelle mit innerer Liste und Objekten zu speichern, die wie folgt aussieht:ActiveAndroid Optimierung relativ Tabellen

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 
} 

so die aktuelle Logik, die List<MyModel> nächste speichert tun :

1) macht Update in ActiveAndroid.beginTransaction()/ActiveAndroid.endTransaction(); Block

2) für jede MyModeluser model von db, Updates abruft und speichert

3) jeweils MyModel ruft aus DB, aktualisiert und speichert

so der gesamte Prozess ungefähr 7-9 Sekunden dauert.

Als user (und andere innere Objekte) kann ich das als nächstes zu tun haben in verschiedenen MyModel Objekte gleich sein:

in der Schleife, die MyModel spart bekommt ich die users und es HashMap setzen, so dass ich hat die Liste der Unique User und speichert es nach MyModel Updates. (aber die gleiche Transaktion). Jetzt speichert es Daten für 3-4 Sekunden.

ABER, sieht ActiveAndroid einige Verweise zwischen MyModel und User Tabelle macht, so dass, wenn ich versuchte, Benutzer aus der Tabelle zu entfernen, bekam ich eine Ausnahme:

FOREIGN KEY constraint failed 

so, wie kann ich damit umgehen?

Antwort

0

Da ActiveAndroid nicht für die letzten 3 Jahre unterstützt wird ... war die Lösung für mich, zu einem anderen orm zu migrieren. ein weiterer Grund gegen ActiveAndroid - is slower than others