无法在GAE数据存储区中存储java.util.Calendar对象

时间:2012-10-27 22:02:16

标签: google-cloud-datastore

我有一个使用java.util.Calendar类的GAE应用程序。 我的应用程序在一天过去后会更改一些内部数据/ 目前我想测试应用程序,所以我有一个假的日期数据成员,我手动设置和修改。 我想将它保存到数据存储区。 在尝试保存它大约2个小时后,我决定将它包装在一个名为FakeDate的类中。它看起来像这样:

@PersistenceCapable
public class FakeDate {

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

@Serialized
private Calendar _fakeCurrentDate;

唯一的问题是,_fakeCurrentDate的数据未保存。 首先,我将日历日期设置为8/8/2012 当我打电话

pm.makePersistent(_currentDate);

看起来一切正常,但是当我打电话时

        PersistenceManager pm = PMF.get().getPersistenceManager();
    Query q = pm.newQuery(FakeDate.class);
    try {
        @SuppressWarnings("unchecked")
        List<FakeDate> list = (List<FakeDate>) q.execute();
        for (FakeDate f:list){
            System.out.println(f.getDayOfMonth());
            System.out.println(f.getMonth());
            System.out.println(f.getYear());
        }
    } finally {
        q.closeAll();
        pm.close();
    }

我得到的FakeDate实例拥有日期为27/9/2012的日历实例。这是我在调用Calendar.getInstance()

时获得的默认日期

看起来我错过了很简单的事情。 我呢?

1 个答案:

答案 0 :(得分:1)

Calendar类不是数据存储模型支持的字段类型。有关支持的类型的详细信息,请查看Properties and Value Types。如果您需要在模型中添加日期字段,请将其声明为java.util.Date并使用Calendar对其进行初始化。

希望这有帮助!