を永続化するとき、私はこのモデルを持っている性質を除く:GoogleのApp Engineアプリケーションで所有されていないエンティティ関係のJDO(GAE)
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Message {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent
private Date timestamp;
@Persistent
private String text;
@Unowned
@Persistent(defaultFetchGroup = "true")
private User sender;
...
}
ユーザーが独立して存在することができますので、モデルは、送信者に@Unowned
関係を持っていますメッセージ。
私がやりたいことは、部分User
のオブジェクト(例えば、私はユーザーIDとユーザー名の格納にのみ関心があります)を持つオブジェクトMessage
を永続させることです。私のエンドポイントクラスでは、私はメッセージを保存していますが、私は関係の特定のユーザーのすべてのフィールドが含まれていない場合、ユーザーオブジェクトはフィールドが失われて更新されます(例えば、 )。元のオブジェクトを「壊す」ことなく、私が望むものを達成する最良の方法は何ですか?
PS 私のエンドポイントメソッドは死にそうです。基本的には、メッセージ上でpm.makePersistent(message);
を呼び出すだけです(メソッドパラメータとして与えられます)。
感謝を!あなたは本当に私の質問には答えませんでしたが、あなたのサイドノートが面白いと感じました。私は、GoogleがJDOを使用しないよう助言していることは知らなかった。私はObjectifyを見ていきます。 –
私は別の言い方をすることができたかもしれませんが、この場合の "User"エンティティは "Message"とは別個のエンティティであると言います。 - "User"エンティティを "メッセージ "エンティティ。つまり、ユーザーを別々に保存する必要があります。 – COBB
はい、私はすでにこれをやっています。ユーザーはメッセージとは完全に別個に生きています(ユーザーオブジェクトは登録時に作成されます)。しかし、メッセージオブジェクトにユーザー(特定のユーザーのプロパティを意図的に残しておく)を付けると、元のユーザーオブジェクトが変更されます。 –