2017-08-09 199 views
1

如何在Android中的Realm中設置唯一的主鍵? Realm文檔說我不能使用除String或者int/long之外的任何東西,那麼UUID類型是不是問題呢?如果我有同名的物品怎麼辦?如何在Realm中設置唯一的主鍵?

例如

public class GroceryItem extends RealmObject { 
    @PrimaryKey 
    private long  id; <--- how can I make this unique without UUID? 
    private String  name; 

public long getId() { 
    return id; 
} 
public void setId(long id) { 
    this.id = id; 
} 
public String getName() { 
    return name; 
} 
public void setName(String name) { 
    this.name = name; 
} } 

回答

2

Realm不支持主鍵的任何自動增量。有關詳細信息,請訪問docs。所以,你要自己處理它。

1)使用應該使用UUID。您還可以得到長期,int或字符串值從它:

long: UUID.randomUUID().getMostSignificantBits(); 
int: (int) UUID.randomUUID().getMostSignificantBits(); 
String: UUID.randomUUID().toString(); 

2),也可以查詢從數據庫的一些數據和應用一些規則來生成新的密鑰。例如,查詢最後一個元素並將其增加爲主鍵。但那不是理想的方式。

+0

這就是它,感謝Potapov。我也喜歡關於如何克服自動增量的建議;你會說什麼是理想的方式? – Xarsiss

+0

那麼,一個理想的方法就是使用UUID並隨機生成它 –

+0

哦,我看到謝謝,我以爲你的意思是有一個更好的方法來實現自動增量:-)我誤讀,再次感謝和有一個美好的一天。 – Xarsiss