2016-04-07 5 views
0

Ich bin neu mit GreenDAO. Dies ist mein Generator KlasseGreenDao "PRIMARY KEY muss eindeutig sein" Fehler trotz hinzugefügt "myEntity.addIdProperty(). AutoIncreament()"

public class FlashCardGenerator { 
    public static void main(String args[]) throws Exception { 
     Schema schema = new Schema(1, "com.flashcard.model"); 

     Entity lesson = schema.addEntity("Lesson"); 
     lesson.addIdProperty().autoincrement(); 
     lesson.addStringProperty("LessonName"); 
     lesson.addStringProperty("ShortDes"); 
     lesson.addStringProperty("LongDes"); 

     Entity card = schema.addEntity("Card"); 
     card.addIdProperty().autoincrement(); 
     card.addStringProperty("SourceText"); 
     card.addStringProperty("TargetText"); 
     card.addByteArrayProperty("Image"); 

     Property lessonID = card.addLongProperty("lessonID").getProperty(); 
     card.addToOne(lesson, lessonID); 
     ToMany lessonToCard = lesson.addToMany(card, lessonID); 
     lessonToCard.setName("cards"); 

     new DaoGenerator().generateAll(schema,"../app/src/main/java"); 
    } 
} 

Obwohl ich ID-Spalte zu "Lektion" hinzufügen und es automatisch erhöhen. Wenn ich diesen Code verwenden

DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "flashcard-db", null); 
SQLiteDatabase db = helper.getWritableDatabase(); 
DaoMaster daoMaster = new DaoMaster(db);DaoSession daoSession = daoMaster.newSession(); 
LessonDao lessonDao = daoSession.getLessonDao(); 
Lesson lesson = new Lesson(1L,"Demo L1", "Nothing", "nothing"); 
long l = lessonDao.insert(lesson); 

if (l > 0) { 
    Toast.makeText(getApplicationContext(), "Success", Toast.LENGTH_SHORT); 
} else { 
    Toast.makeText(getApplicationContext(), "Fail! OMG", Toast.LENGTH_SHORT); 
} 

Das erste Mal, dass ich Projekt ausführen, wird der Datensatz erfolgreich eingesetzt, das zweite Mal, dass ich das Projekt ausführen, bekam ich „PRIMARY KEY eindeutig sein muss“ -Fehler. Dies ist ein häufiger Fehler, wenn der Primärschlüssel verletzt wird. Aber ich habe es auch AutoIncreament gesetzt? Kann sein, weil ich die Id auf 1L gesetzt habe? Es wird nicht empfohlen, generated-class zu ändern, und alle Konstruktoren von Lesson haben den Parameter "Id".

Antwort

1

Ok, sehr schnell, nach ein wenig Suche auf GreenDao support, fand ich die Lösung, setzen Sie einfach den ID-Parameter auf NULL, anstatt einer "langen Zahl". Es hat funktioniert. Ich werde die Post hier jemand halten, nachdem ich so etwas wie dieses

treffen Der Code für das Einfügen sein:

Lesson lesson = new Lesson(null ,"Demo L1", "Nothing", "nothing"); 
     long l = lessonDao.insert(lesson); 
Verwandte Themen