3

私は永続性と Objectify で足を濡らしています。親キーの割り当てに関するガイダンスが必要です。私の特定の質問はすべて大文字です。ありがとう。(以下のサンプル モデルには、AppUser と Video が含まれています。アイデアは YouTube に似ています。ユーザーは自分に属するビデオを作成します。)

@Entity
class Video{
// QUESTION 1: SHOULD THIS CLASS HAVE ONLY 1 KEY FIELD IF I WANT A 
PARENT RELATIONSHIP WITH AppUser, AND TYPE IS Key<AppUser> ?
@Parent Key<AppUser> owner;
@Id private Long id;

protected Video(){}
protected Video(User u){ // GAE User object     
    AppUser au = ofy().load().type(AppUser.class).filter("userId",u.getUserId()).first().get();

    // QUESTION 2: WHICH WAY IS RIGHT (TO ASSIGN PARENT KEY)?
    this.owner = Key.create(au.getKey(),AppUser.class,au.getId()); 
    // or:
    // owner = au.getKey();
    // or:
    // owner = au;
}
}

@Entity
public class AppUser {
@Id private String userId;

// QUESTION 3: DO ALL CLASSES REQUIRE A KEY FIELD?
private Key<AppUser> key;

protected AppUser(){}
protected AppUser(User u){// GAE User object    
    this.userId = u.getUserId();
}

public String getId(){
    return userId;
}

public Key<AppUser> getKey(){
    // QUESTION 4: IS THIS THE CORRECT WAY TO RETURN THE KEY? 
    // WOULD THAT IMPLY I NEED TO EXPLICITLY ASSIGN A VALUE TO FIELD key?

    return this.key;

    // THE ALTERNATIVE WOULD BE TO CREATE A KEY 
AND RETURN IT RIGHT? (THEN I CAN EXCLUDE FIELD key?)
    // return Key.create(AppUser.class, userId);
}
}
4

1 に答える 1

3

さらなる知識に基づいて自分の質問に答える:

  1. 通常、親子関係が必要な場合は、1 つのキーで十分です。別の Key フィールドが必要な理由がわかりません。
  2. @Parent キーに値を割り当てる正しい方法は 1 つではないと思います。これを使用するとうまくいくようです:

    this.parent = Key.create(instanceOfParent);

  3. すべてのクラスにキー フィールドが必要なわけではありません。必要なときに使用します。
  4. キーを返す唯一の正しい方法はありません。どちらの例も機能します。
于 2012-12-07T15:24:32.797 に答える