Google App Engine数据存储区多字段密钥

时间:2009-10-14 22:56:28

标签: java google-app-engine google-cloud-datastore

@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完成此操作?

2 个答案:

答案 0 :(得分: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被视为应用程序中的主键。

答案 1 :(得分:1)

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