【发布时间】:2011-08-15 18:16:02
【问题描述】:
将应用程序从 M/S 数据存储迁移到 HRD 时,需要避免一些陷阱。我在一个这样的特定区域有一个问题,它说“同一种类的实体 ID 并不总是唯一的”。
为了进一步解释,这里有一个例子。
- 假设我有 3 个实体客户、联系人、地址,如下所示
- 联系人实体引用客户使用客户密钥作为 com.google.appengine.api.datastore.Key
- 地址实体引用客户使用客户密钥作为 Long
这 3 个类是:
public class Customer {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key id;
@Persistent
private String name;
}
public class Contact {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key id;
@Persistent
private String name;
@Persistent
private Key customerId;
}
public class Address {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key id;
@Persistent
private String address;
@Persistent
private Long customerId;
}
所有实体都是根实体。
现在,当我们迁移联系人和地址实体中的 customerId 时会发生什么?它们还能工作吗?还是在迁移之前我们需要对它们做一些特别的事情?
谢谢!
【问题讨论】: