2016-05-29 9 views
0

Ich schreibe eine Android-Anwendung, die Sugar ORM für meine Datenpersistenz verwendet. Ich habe einen Fall, in dem ich eine Objekt-ID von einem Webserver bekomme, und diese ID muss mit der ID meines Datensatzes in der lokalen Datenbank übereinstimmen. So wird mein Datensatz beim späteren Speichern korrekt aktualisiert.Sugar ORM überschreibt ID aus Feed

Das Problem, das ich habe, ist, dass wann immer ich die SugarRecord-Klasse erweitern Sqlite überschreibt die ID, die ich im Objekt festlegen. ZB die ID in meinem Feed ist 2, aber wenn in die Datenbank eingefügt wird die ID in 1 geändert.

Gibt es sowieso zu verhindern, dass die automatische inkrementieren, die die Datenbank mit Sugar ORM macht?

Danke!

Antwort

0

In ORM Primärschlüssel Zucker mit autoincrement Eigenschaft wird mit id-Spalte von default.Try stellen Sie die Schemaversion zu aktualisieren, indem Sie eine höhere Zahl in Manifest-Datei eingeben und auch die Variable (id Variable in POJO Klasse) umbenennen

+0

Ja, dachte ich über einen anderen Namen für die Spalte, aber würde das nicht bedeuten, dass Zucker ORM wouldn‘ Sie wissen, wie Sie den Datensatz einfügen oder aktualisieren können? Wenn ich das täte, bin ich mir ziemlich sicher, dass ich die Einfüge-/Aktualisierungsroutine manuell verwalten muss, um sicherzustellen, dass ich keine doppelten Einträge erhalte. –

+0

meine Frage ist wirklich, wie ich das Standardverhalten in Sugar ORM umgehen kann. –

0

ich hatte das gleiche Problem, dass ich durch Überschreiben der ID Setter in meinem Modell Klasse wie folgt gelöst:

public class MyClass extends SugarRecord { 

    @Unique 
    private Long id; 

    // default constructor for SugarRecord 
    public MyClass() { 

    } 

    @Override 
    public Long getId() { 
     return this.id; 
    } 

    @Override 
    public void setId(Long id) { 
     // Use "super" to overwrite 
     super.setId(id); 
     this.id = id; 
    } 
}