0

私は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("abc@gmail.com");
user.setContact(contact);
pm.makePersistent(user);
}

この登録メソッドを 2 回呼び出した場合 (または、同じユーザー名と電子メール ID のセットで登録フォームを 2 回送信した場合と同等)、データストアは重複キー例外について不平を言いません。

「ユーザー名」をキーとして作成しているため、重複キー例外が発生することが予想されます。しかし、なぜこれが起こらないのですか?

ありがとうマ

4

1 に答える 1

0

「ユーザー名と電子メールの同じセット」とは何ですか? JDOによってユーザー名が自動生成されるように設定すると、ユーザーではなくそのフィールドの値が生成されます。したがって、それはユニークです。したがって、例外はありません。

于 2012-07-02T13:51:19.923 に答える