我是 GAE 新手,尤其是 Datastore (JDO)
我有一个对象组合:用户对象有一个联系人对象的引用。我能够将它们存储在数据存储中。但是该代码允许存储多个具有相同“用户名”的对象,该用户名被定义为主键。
这是代码片段
//User class
@PersistenceCapable (identityType = IdentityType.APPLICATION)
public class User{
@PrimaryKey
@Persistent (valueStrategy = IdGeneratorStrategy.IDENTITY)
String username;
@Persistent
Contact contact;
//getters and setters
}
// Contact class
@PersistenceCapable (identityType = IdentityType.APPLICATION)
public class Contact {
@PrimaryKey
@Persistent (valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key username;
@Persistent
String Phone1;
}
//DAO class
public void register() {
User user = new User();
user.setUserName("abc");
Contact contact=new Contact();
contact.setEmail("abc@gmail.com");
user.setContact(contact);
pm.makePersistent(user);
}
如果我两次调用此注册方法(或等效于两次使用相同的用户名和电子邮件 ID 提交注册表单),则数据存储不会抱怨重复键异常。
由于我正在创建“用户名”作为我的 KEY,我希望得到重复的密钥异常。但是为什么这没有发生呢?
谢谢马