【问题标题】:datastore entity with more than one unique key具有多个唯一键的数据存储实体
【发布时间】:2014-05-15 20:02:16
【问题描述】:

这个问题已经被问过了。但我现在的情况有点不同,我希望现在有更好的答案。所以这里是:

我需要一个数据存储实体有两个唯一键,一个是主键。

以下内容是否足够?当我对数据存储区进行密钥查询时,我需要它以了解我指的是keyA

@Entity
public class UserAccount implements Serializable{

  @Id
  @GeneratedValue(strategy=GenericType.IDENTITY)
  Key keyA;//based on email

  @PrimaryKey
  @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
  Key keyB;//randomly generated
  //….other data
}

我需要数据存储来帮助强制执行键的唯一性,因此仅让 keyB 成为我自己管理的简单字段是不够的。

【问题讨论】:

  • 那么Key A和Key B的组合也必须是唯一的吗?
  • 顺便说一句,根据我的设计。
  • 你已经知道你的答案了,数据存储没有像“唯一索引”这样的对 SQL 的内置支持。 @Namphibian 可能会告诉您将两个“id”连接成一个唯一的键名。管理自己的电子邮件属性的唯一性实际上对您的情况来说已经足够了,因为您有 风险让两个人同时使用同一电子邮件创建两个 UserAccounts...

标签: java google-app-engine google-cloud-datastore


【解决方案1】:

您必须自己强制执行唯一性。那是在非主键上,您必须进行查找并查看是否得到结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-18
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    相关资源
    最近更新 更多