GAE数据存储区仅保存对象的部分内容

时间:2012-10-27 17:20:33

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

我有一个名为AdUser的对象,如下所示:

@PersistenceCapable
public class AdUser{

@Persistent
protected final int _id;

@Persistent
protected String _firstName, _lastName;

@Persistent
protected double _bankRoll;

@Persistent(serialized = "true", embeddedElement = "true", defaultFetchGroup = "true") 
protected final User _googleUser;

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;

然后,在我的代码中,我创建了一个新的AdUser对象并用数据填充它。 _googleUser数据库的User类来自com.google.appengine.api.users.User

然后在我的代码中,我运行以下命令:

try {
        pm.makePersistent(user);
    } finally {
       pm.close();
}

之后:

PersistenceManager pm = PMF.get().getPersistenceManager();
Query q = pm.newQuery(AdUser.class);
try {
    @SuppressWarnings("unchecked")
    List<AdUser> list = (List<AdUser>) q.execute();
    userArray = new ArrayList<AdUser>(list);
} finally {
    q.closeAll();
    pm.close();
}

当我遍历列表时,我看到例如_firstName和_lastName数据名称被正确检索,但是例如_id字段和_googleUser字段不是,并且分别返回0和null。

我在这里很无能为力。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您已将final_id设置为_googleUser,但您尚未初始化它们。因此,在创建类的实例并将它们保留在数据存储区中时,无法修改它们的值。

相关问题