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注释.)
"伪造"的一种方法是创建另一种称为电子邮件的类/类,其中电子邮件本身作为密钥,而用户的密钥作为属性.由于电子邮件现在是一个密钥,它将被强制为唯一.只需确保您的电子邮件实体是顶级实体,而不是其关联用户的子级.您还必须密切关注您对交易的使用,以确保如果两个用户尝试在同一时间使用同一封电子邮件,则不要让重复的漏洞通过.
我编写了一个类来处理向App Engine实体添加唯一字段的所有功能.请随意使用它.
在项目中插入此类,只需添加get和update方法,并提供实体名称,字段名称和唯一字段值
源代码可在此处获得:
http://code.google.com/p/appengine-uniquefields/