@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.
