@Jaroslav

Thank you.

I guess I'll have to find some other workaround then.

-Nischal

On Apr 17, 1:59 pm, Jaroslav Záruba <[email protected]> wrote:
> To my knowledge @PrimaryKey (Key) can not be changed. In this
> video<http://www.youtube.com/watch?v=tx5gdoNpcZM> question
> about changing value of the Key gets asked+answered.
> The entity needs to be re-created entirely. (I presume changing @PrimaryKey
> type is effectively the same question.)
>
> On Sat, Apr 17, 2010 at 9:51 AM, nischalshetty 
> <[email protected]>wrote:
>
>
>
> > @Ian
>
> > Thanks a lot for detailing the solution so clearly. There is one more
> > thing I forgot to add.
>
> > The field in question is @PrimaryKey :(
>
> > The first approach won't work right? I guess running a task to copy
> > the fields is the only option left (I have a little over 1.3 million
> > entities!!)
>
> > And, once I copy the fields, will I be able to change the
> > @PrimaryKey , to the new field? Is that even possible?
>
> > -Nischal
>
> > On Apr 17, 12:27 am, Ian Marshall <[email protected]> wrote:
> > > OK, let us assume that your original persistent field, and its getter
> > > and setter methods, are something like below (using JDO):
>
> > >   @Persistent
> > >   private Integer iValue;
>
> > >   public Integer getValue()
> > >   {
> > >     return iValue;
> > >   }
>
> > >   public void setValue(Integer value)
> > >   {
> > >     iValue = value;
> > >   }
>
> > > Assuming that you want to preserve your old Integer values, one thing
> > > you could do, for a gradual change-over, is create a new Long
> > > persistence field to something like the code snippet below, where the
> > > new Long field has an instant effect on your code, and an eventual
> > > effect in the datastore.
>
> > >   @Persistent
> > >   private Integer iValue;
>
> > >   @Persistent
> > >   private Long loNewValue;
>
> > >   public Long getValue()
> > >   {
> > >     Long loResult = loNewValue;
>
> > >     if ((loResult == null) && (iValue != null))
> > >       loResult = new Long(iValue.longValue());
>
> > >     return loResult;
> > >   }
>
> > >   public void setValue(Long value)
> > >   {
> > >     loNewValue = value;
> > >     iValue = null;
> > >   }
>
> > > This way, your code thinks that you now have a single Long field, and
> > > it uses old Integer values until they get overwritten with a new one.
>
> > > An alternative way is to write some code to iterate through all your
> > > instances, setting the new field with the value from the old,  but if
> > > you have lots of instances then you may have to break this operation
> > > up into smaller chunks.
>
> > > If you don't need to preserve your old data, then forget what I have
> > > said above since your task becomes easier.
>
> > > Have fun!
>
> > > --
> > > You received this message because you are subscribed to the Google Groups
> > "Google App Engine" group.
> > > To post to this group, send email to [email protected].
> > > To unsubscribe from this group, send email to
> > [email protected]<google-appengine%[email protected]>
> > .
> > > For more options, visit this group athttp://
> > groups.google.com/group/google-appengine?hl=en.
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Google App Engine" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> > [email protected]<google-appengine%[email protected]>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/google-appengine?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Google App Engine" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group 
> athttp://groups.google.com/group/google-appengine?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

Reply via email to