0
@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable ="false")
public class Foo implements IsSerializable {

 @PrimaryKey
 @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
 private Long id;

    @Persistent
    private Long revision;

    @Persistent
    private String information;
}

問題は、このオブジェクトが永続化されたときにそれ自体を上書きし続け、次のリビジョンで新しい「レコード」を作成しないことです。従来のRDBMSでは、2列の主キーになります。

Google App Engine Datastoreでこれを実現するにはどうすればよいですか?

4

2 に答える 2

1

改訂履歴を保持したい場合は、更新ごとに新しいレコードを作成して書き込む必要があります。ID はレコードを一意に識別します。データストアは、ユーザーがリビジョンを ID の一部とみなしていることを知る方法がありません。

于 2009-10-30T12:10:00.543 に答える
1

これが一番の解決方法だと思います。

@PersistenceCapable(identityType = IdentityType.APPLICATION,detachable = "false")
public class Foo implements IsSerializable {

  @PrimaryKey
  @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
  private Long _internalId;

  @Persistent
  private Long id;

  @Persistent
  private Long revision;

  @Persistent
  private String information;
}

ここで、id とリビジョンは、アプリケーションで主キーとして扱われます。

于 2009-10-14T23:16:59.787 に答える