2012-07-01 165 views
0

我是新来GAE特别是对于数据存储(JDO)GAE与数据存储(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("[email protected]"); 
user.setContact(contact); 
pm.makePersistent(user); 
} 

如果我把这个注册方法两次(或相当于提交登记表两次同一套用户名和电子邮件的ID),数据存储是不抱怨重复键例外。

由于我正在创建“用户名”作为我的密钥,我期待得到重复键异常。但为什么这不会发生?

感谢 马

回答

0

什么 “同一套用户名和电子邮件的”?您将用户名设置为由JDO自动生成,所以它不会为您生成该字段的值。因此它是独一无二的。因此没有例外。