1

正しい方法でオブジェクト化するために@Idを使用するかどうかはわかりません。現在、@IdフィールドとしてeMail-Addressを使用しています。メールフィールドはサーバー側でのみ設定されます(OAuthService.getCurrentUser.getEmail)

最初の質問:これは良い考えですか?

たとえば、親としてRegistrationTOを持つItem-classを作成する場合、Item-classの@Idフィールドとしてemail-addressを使用するのは理にかなっています。または、Item-classに独自の自動生成されたidと関係を指定するためのキーの親?

Objectify-チュートリアルでは@Parentを避けることをお勧めします-したがって、ここでも必要ではないと思います。私は正しいですよ?

ここに私のRegistrationTO:

public class RegistrationTO implements Serializable {
private static final long   serialVersionUID    = 1L;

@NotNull
@Size(min = 5, max = 20)
private String              firstname;

@NotNull
@Size(min = 5, max = 20)
private String              name;

@NotNull
@Size(min = 5, max = 20)
private String              country;

@Id
@NotNull
@Size(min = 5, max = 20)
@Pattern(regexp = "\b[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\b")
private String              email;

public RegistrationTO() {

}

public RegistrationTO(final String firstname, final String name, final String company) {
    this.firstname = firstname;
    this.name = name;
    this.country = country;
    email = "will be set on server (Oauth)";
}

public String getFirstname() {
    return firstname;
}

public String getName() {
    return name;
}

public String getCountry() {
    return country;
}

public String getEmail() {
    return email;
}

public void setEmail(final String email) {
    this.email = email;
}
  }

アイテムクラスのサンプル:

public class Item implements Serializable {
private static final long   serialVersionUID    = 1L;

@Id
Long id

//or
//@Id
//String email

Key<RegistrationTO> parent;

String itemno;
    }

前もって感謝します!

4

1 に答える 1

1

@Idとしての電子メールの使用が正しいかどうかという質問に関しては、電子メールはクラスの各オブジェクトを一意に識別するため、問題ありません。

これで、Itemクラスの@Idに関して、電子メールが各オブジェクトを一意に識別する場合、@Idとして新しい自動生成されたLongを作成する必要はありません。一般に、@ Idを選択するための基準は、クラスのすべてのオブジェクトを一意に識別することです。

RegistrationTOクラスとItemクラスの関係については、これらのエンティティを同じエンティティグループにする必要がある場合にのみ、@Parentアノテーションを使用してください。このためのコード:

@Parent
Key<RegistrationTO> parent;

それ以外の場合は、RegistrationTOエンティティとItemエンティティをGAEデータストアの異なるエンティティグループに保存できる「プレーン」な関係を使用します(例のように)。エンティティグループの詳細については、 http ://code.google.com/appengine/docs/java/datastore/entities.html#Entity_Groups_and_Ancestor_Pathsをご覧ください。

お役に立てば幸いです。

于 2011-10-27T10:10:16.743 に答える