appengine数据存储更改实体属性 [英] appengine datastore change entities property

查看:107
本文介绍了appengine数据存储更改实体属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想将实体属性从String更改为long。我在将IntegerProperty更改为现有AppEngine DataStore的FloatProperty中的类似问题但我用Java编写,需要一些代码示例,因为我对mapreduce一无所知。

例如。我们希望将userId从String更改为这个班级



我也希望得到关于我长时间存储日期的建议的字符串,以便可以从android,GWT等等(通过Rest Json或RPC)轻松消耗时间信息。现在,GWT没有Jodatime,它对Java.util.Date和解析的支持有限。

想要将字符串转换为长字符,除了使用raw GAE编写转换片段外,我看不到任何其他选择,例如:

  import com.google.appengine.api.datastore.DatastoreServiceFactory; 
import com.google.appengine.api.datastore.Entity;
import com.google.appengine.api.datastore.PreparedQuery;
import com.google.appengine.api.datastore.Query;

Query q = new Query(Task.class.getName());
PreparedQuery pq = DatastoreServiceFactory.getDatastoreService().prepare(q);
for(Entity entity:pq.asIterable())
{
String orig = entity.getProperty(userId)。toString();
entity.removeProperty(userId);
entity.setProperty(userId,Long.parseLong(orig));
}


I would like to change the entity property from String to long. I have seen Nick answering similar problem in Change IntegerProperty to FloatProperty of existing AppEngine DataStore but I am writing in Java and need some code example since I don't know anything about the mapreduce.

e.g. we want to change userId from String to Long of this class.

I also would like to get advice on my thinking of storing date in long instead of String so that the time information can be consumed readily from android, GWT and more(over Rest Json or RPC). Right now, GWT does not have Jodatime and it has limited support of Java.util.Date and parsing.

解决方案

If you really want to convert from String to Long, I can't see any other choice except to write a conversion snippet using raw GAE, eg:

import com.google.appengine.api.datastore.DatastoreServiceFactory;
import com.google.appengine.api.datastore.Entity;
import com.google.appengine.api.datastore.PreparedQuery;
import com.google.appengine.api.datastore.Query;

Query q = new Query (Task.class.getName());
PreparedQuery pq = DatastoreServiceFactory.getDatastoreService ().prepare (q);
for (Entity entity : pq.asIterable ())
{
    String orig = entity.getProperty ("userId").toString ();
    entity.removeProperty ("userId");
    entity.setProperty ("userId", Long.parseLong (orig));
}

这篇关于appengine数据存储更改实体属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆