appengine datastore изменить свойство сущностей - PullRequest
0 голосов
/ 20 марта 2012

Я хотел бы изменить свойство объекта с String на long. Я видел, как Ник отвечал на аналогичную проблему в Измените IntegerProperty на FloatProperty существующего хранилища данных AppEngine , но я пишу на Java и мне нужен пример кода, так как я ничего не знаю о mapreduce.

например. мы хотим изменить userId со String на Long этот класс .

Я также хотел бы получить совет о том, как долго хранить дату вместо String, чтобы информация о времени могла легко потребляться с Android, GWT и других (через Rest Json или RPC). В настоящее время GWT не имеет Jodatime и имеет ограниченную поддержку Java.util.Date и синтаксического анализа.

Ответы [ 3 ]

1 голос
/ 27 марта 2012

Если вы действительно хотите конвертировать из String в Long, я не вижу другого выбора, кроме как написать фрагмент преобразования с использованием необработанного 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));
}
1 голос
/ 27 марта 2012

Ваш класс использует JPA, а не JDO.Последняя версия (v2.x) плагина GAE JPA позволяет сохранять (java.util.) Date as Long или String.Это не помогло бы вам перенести данные (см. Ответ Джонатана), но позволило бы сохранить будущие поля Date как Long.IIRC вы можете указать "jdbcType" (аннотация расширения DataNucleus), так как INTEGER вызовет это.

1 голос
/ 26 марта 2012

Какой у вас постоянный интерфейс? JDO (мой), JPA, Objectify, Twig, raw GAE / J API? Я не думаю, что многие люди могут дать вам пример кода, не зная об этом.

Также, пожалуйста, дайте фрагмент кода вашей существующей (я полагаю, базовой даты и времени) персистентной сущности, включая элемент данных, о котором вы говорите.

...