2015-09-20 60 views
2

我想創建一個表,其中兩列值不會重複。如何在GreenDAO中創建組合唯一鍵約束

Entity entity = schema.addEntity("TableName"); 
    entity.addLongProperty("id").primaryKey().autoincrement(); 
    entity.addStringProperty("firstId"); 
    entity.addStringProperty("secondId"); 

在這裏,我要創建firstId &唯一的密鑰secondId Index indexUnique = new Index(); indexUnique.addProperty(firstId); indexUnique.addProperty(secondId); indexUnique.makeUnique();

嘗試添加索引的唯一。但是這使得這兩個屬性都是唯一的。但不是獨一無二的..我想要的。

回答

2

documentation說:

當前主鍵(PK)的限制:目前,實體必須有一個或長或長屬性作爲其主鍵。這是Android和SQLite的推薦做法。 greenDAO已準備好處理將來的任何主要關鍵情況,但並非所有事情都已完全實施。 要解決此問題,可以使用長主鍵併爲預期的「鍵」屬性使用唯一索引。

對於你:

Entity entity = schema.addEntity("TableName"); 
entity.addIdProperty().primaryKey().autoincrement(); 
Property firstIdForTableNamePK = entity.addStringProperty("firstId").notNull().getProperty(); 
Property secondIdForTableNamePK = entity.addStringProperty("secondId").notNull().getProperty(); 
Index indexUnique = new Index(); 
indexUnique.addProperty(firstIdForTableNamePK); 
indexUnique.addProperty(secondIdForTableNamePK); 
indexUnique.makeUnique(); 
entity.addIndex(indexUnique);