如何在java Google App Engine中强制使用唯一字段值

sup*_*bra 7 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
}
Run Code Online (Sandbox Code Playgroud)

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

丹尼尔

Pet*_*ore 11

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

"伪造"的一种方法是创建另一种称为电子邮件的类/类,其中电子邮件本身作为密钥,而用户的密钥作为属性.由于电子邮件现在是一个密钥,它将被强制为唯一.只需确保您的电子邮件实体是顶级实体,而不是其关联用户的子级.您还必须密切关注您对交易的使用,以确保如果两个用户尝试在同一时间使用同一封电子邮件,则不要让重复的漏洞通过.


xtr*_*com 6

我编写了一个类来处理向App Engine实体添加唯一字段的所有功能.请随意使用它.

在项目中插入此类,只需添加get和update方法,并提供实体名称,字段名称和唯一字段值

源代码可在此处获得:

http://code.google.com/p/appengine-uniquefields/