java - 如何在 java Google App Engine 中强制执行唯一字段值

标签 java google-app-engine

我正在尝试找出如何在唯一 ID 以外的字段中强制执行唯一性。

例子:

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class User implements IsSerializable {
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Long id;

    @Persistent
    private String name; 

    @Persistent
    private String email; // <= I want this to be unique as well
}

在上面的示例中,我如何在整个数据库中强制确保电子邮件值的唯一性?

丹尼尔

最佳答案

目前没有使用应用引擎数据存储的内置方式。参见 this datanculeus ticket例如。 (请注意,JDO 本身确实有一个@unique 注释。)

“伪造”它的一种方法是创建另一种称为电子邮件的种类/类,将电子邮件本身作为 key ,并将用户的 key 作为属性。由于电子邮件现在是一个键,它将被强制为唯一的。只需确保您的电子邮件实体是顶级实体,而不是其关联用户的子实体。您还必须密切注意您对事务的使用,以确保如果两个用户同时尝试使用同一封电子邮件,您不会让重复的信息漏掉。

关于java - 如何在 java Google App Engine 中强制执行唯一字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1563070/

相关文章:

python - 单元测试 GAE Blobstore(带 Nose )

python - 谷歌应用引擎 : Database object is not iterable

java - GlassFish 4 替代文档不起作用

java - 参数化对象无法解析为变量

java - android sqlite数据库,空指针

java - Android 的闹钟功能打开了吗?

google-app-engine - Google 应用引擎,30 秒后请求超时,F2 实例

python - 将 Blob 从一个 AppEngine 应用程序复制到另一个

java - 如何将CameraX与PreviewView一起使用?

python - 如何将键值对的 JSON 数组转换为 JSON 对象?