我正在尝试找出如何在唯一 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/