Win Myo Htet
Win Myo Htet

Reputation: 5457

appengine datastore change entities property

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.

Upvotes: 0

Views: 2142

Answers (3)

DataNucleus
DataNucleus

Reputation: 15577

Your class is using JPA not JDO. The latest version (v2.x) of the GAE JPA plugin allows persistence of (java.util.)Date as Long or String. This wouldn't cater for your migration of data (see the reply by Jonathan for that) but would allow you to persist future Date fields as Long. IIRC you can specify the "jdbcType" (DataNucleus extension annotation) as INTEGER would trigger that.

Upvotes: 1

Jonathan
Jonathan

Reputation: 839

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));
}

Upvotes: 1

Ian Marshall
Ian Marshall

Reputation: 760

What is your persistence interface? JDO (mine), JPA, Objectify, Twig, raw GAE/J API? I don't think that many people can give you a code example without knowing this.

Also, please give the code extract of your existing (an underlying date-time, I presume) persistent entity including the data member you talk about.

Upvotes: 1

Related Questions