2016-04-07 16 views
0

Ben GreenDAO ile yeni. Ben "ders" için id sütun ekleyin ve bunu otomatik artım yapmak rağmen bu benim Jeneratör sınıfGreenDao "PRIMARY KEY benzersiz olmalı" hata eklenmiş "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"); 
    } 
} 

olduğunu. Bu kodu

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); 
} 

Projeyi ilk çalıştırdığınızda kullanırken, kayıt başarıyla Projeyi çalıştırmak ikinci kez takıldığında, ben hata "PRIMARY KEY benzersiz olmalıdır" var. Birincil anahtar şiddetli olduğunda bu yaygın bir hatadır. Ama ben de AutoIncreament'i mi kurdum? Kimliği 1L olarak ayarladığımdan olabilir mi? Oluşturulan sınıfın değiştirilmesi tavsiye edilmez ve Lesson'un kurucusunun tamamı "Id" parametresine sahiptir.

cevap

1

Tamam, çok hızlı bir şekilde, GreenDao support numaralı aramadan sonra, çözüm bulduğumda, herhangi bir "uzun sayı" yerine yalnızca NULL parametresini NULL olarak ayarlayın. İşe yaradı.

Lesson lesson = new Lesson(null ,"Demo L1", "Nothing", "nothing"); 
     long l = lessonDao.insert(lesson); 
: me eklemek için kod olacak bu

gibi bir şey karşılamak sonra kimseye burada yazılan tutacak

İlgili konular