2017-08-09 197 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