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中,它是一个两列的主键。

如何使用Google App Engine Datastore完成此任务?

4

2 回答 2

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 和 revision 被视为应用程序中的主键。

于 2009-10-14T23:16:59.787 回答
1

如果要保留修订历史记录,则需要为每次更新创建并写入新记录。id 唯一标识记录 - 数据存储区无法知道您也将修订视为 id 的一部分。

于 2009-10-30T12:10:00.543 回答