2012-07-01 163 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自動生成,所以它不會爲您生成該字段的值。因此它是獨一無二的。因此沒有例外。