Ich versuche, einige Daten in einer Android SQLite-Datenbank zu erstellen und abzurufen.queryForAll gibt Null-IDs mit ORMLite Android zurück
Wenn ich die Daten mit create Methode hinzufüge, werden Objekte korrekt aktualisiert (die Lange ID ist gesetzt). Aber dann, wenn ich die Daten mit queryAll Methode abrufen, werden Objekte korrekt zurückgegeben, mit Ausnahme des ID-Attributs, das als null kommt. Ich bin mit Datenbankfeld-Tag mit generatedId Attribute auf true gesetzt, genau wie die Dokumentation sagt:
generatedIdBoolean, ob das Feld ein automatisch generierter ID-Feld ist. Der Standardwert ist false. Nur ein Feld kann dies in einer Klasse festlegen. Dies teilt der -Datenbank mit, dass für jede eingefügte Zeile automatisch eine entsprechende ID generiert wird. Wenn ein Objekt mit einer generierten ID mit der Methode Dao.create() erstellt wird, generiert die Datenbank eine ID für die Zeile, die zurückgegeben und im Objekt durch die create-Methode festgelegt wird. Einige Datenbanken erfordern Sequenzen für generierte IDs. In diesem Fall wird automatisch der Sequenzname generiert. Um den Namen der Sequenz anzugeben, verwenden Sie generatedIdSequence. Nur eines davon, id und generatedIdSequence kann angegeben werden. Siehe Abschnitt Felder mit generatedId.
Es ist meine Klasse:
@DatabaseTable(tableName = "LANGUAGE")
public class Language {
@DatabaseField(generatedId = true, columnName = "language_id")
private Long id;
@DatabaseField(columnName = "language_locale")
private String locale;
@DatabaseField(columnName = "language_active")
private boolean active;
@DatabaseField(columnName = "language_name")
private String name;
// getters and setters...
}
ich die Daten wie folgt eingefügt:
Language pt = new Language();
pt.setActive(true);
pt.setName("Português");
pt.setLocale("pt_PT");
dao.create(pt);
Language en = new Language();
en.setActive(true);
en.setName("English");
en.setLocale("en_EN");
dao.create(en);
// here, both pt and en have an id, 1 and 2, respectively
Aber wenn ich ausführen
dao.queryForAll()
locale, aktive und Namen Attribute kommt in Ordnung, aber id ist null.
Irgendwelche ideia? Ich habe bereits versucht, commit nach zu rufen erstellen, aber nichts ändert sich.
Sind Sie sicher, dass Ihre Datenbankkonfigurationsdatei vollständig aktualisiert wurde? Ich habe noch nie etwas davon gesehen oder gehört, besonders mit dem ID-Feld. Funktioniert 'dao.queryForId (...)' auch, aber nicht die ID? – Gray
queryForId (übergibt ID 1 für Beispiel) gibt null zurück.Es ist sehr seltsam, es scheint, dass create method den Job erledigt, aber dann speichert die Datenbank die Entity ohne ID ... für meine Erfahrung muss ich einen kleinen Fehler haben und werde es nur durch try-error finden ... jede Hilfe ist geschätzt – rmpt
Und die IDs werden korrekt/sequenziell von create-Methode zugewiesen, so scheint es, dass die Entitäten tatsächlich in der Datenbank sind. Denkst du, es kann ein Cache-Problem sein? – rmpt