私はGreenDAOで新しくなっています。私は「レッスン」へのidカラムを追加して自動increament作るが、これは私のGeneratorクラスGreenDao "myEntity.addIdProperty()。autoIncreament()"が追加されているにもかかわらず、 "PRIMARY KEYは一意である必要があります"エラーが発生する
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");
}
}
です。私はこのコード
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);
}
私はプロジェクトを実行する最初の時間を使用する場合は、レコードが正常に挿入されて、私はプロジェクトを実行する二回目は、私が「PRIMARY KEYはユニークでなければなりません」エラーを得ました。これは、プライマリキーが暴力的な場合によくあるエラーです。しかし私はそれもAutoIncreamentに設定していますか?私はIDを1L
に設定している可能性がありますか?生成クラスは変更することはお勧めできません。レッスンのコンストラクターにはすべて「Id」パラメーターがあります。