【问题标题】:How do I set a unique primary key in Realm?如何在 Realm 中设置唯一的主键?
【发布时间】:2017-08-09 09:55:07
【问题描述】:

如何在 Android 的 Realm 中设置唯一的主键? Realm 文档说我不能使用除 String 或 int/long 之外的任何东西,那么 UUID 类型也是不可能的吗?如果我有同名的物品怎么办?

例如

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

【问题讨论】:

    标签: android realm


    【解决方案1】:

    Realm 不支持主键的任何自动增量。访问docs 了解更多信息。所以,你要自己处理。

    1) 使用时应使用 UUID。您还可以从中获取 long、int 或 String 值:

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

    2) 或者您可以从数据库中查询一些数据并应用一些规则来生成新密钥。例如,查询最后一个元素并增加它的主键。但这不是理想的方式。

    【讨论】:

    • 就是这样,谢谢 Potapov。我也喜欢关于如何克服自动增量的建议;你会说什么是理想的方式?
    • 嗯,一个理想的方法就是使用 UUID 并随机生成它
    • 哦,我明白了,谢谢,我以为你的意思是有更好的方法来实现自动增量 :-) 我看错了,再次感谢,祝你有美好的一天。
    猜你喜欢
    • 2014-11-26
    • 2014-12-02
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    相关资源
    最近更新 更多