【发布时间】:2011-04-01 10:00:47
【问题描述】:
我正在 Google 应用引擎中上课
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;
public class A {
@PrimaryKey
@Persistent
String pk;
@Persistent(dependent = "true")
private B b;
.
.
.
}
和
import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;
import com.google.appengine.api.datastore.Key;
public class B {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;
@Persistent
private String name;
.
.
.
}
我有一个创建对象的代码:
{
PersistenceManager pm = PMF.get().getPersistenceManager();
A a = new A("pk1");
a.setB(new B(...));
try {
pm.makePersistent(a);
} finally {
pm.close();
}
}
随后相同的代码更新对象,使用相同的字符串作为 A 的主键。
{
PersistenceManager pm = PMF.get().getPersistenceManager();
A a = new A("pk1");
a.setB(new B(...));
try {
pm.makePersistent(a);
} finally {
pm.close();
}
}
因为我使用了'@Persistent(dependent = "true")',所以我期望在数据存储区中最终得到一个 A 对象和一个 B 对象,但我发现一个 A 对象和一个 B 对象作为次数这段代码运行。
我哪里错了? 谢谢, 以利
【问题讨论】:
标签: java google-app-engine google-cloud-datastore jdo