Hey, I agree that your comments above are true for serialized fields, but I can't find any documentation indicating such a behavior for collections (I assume "supported collections" here, as described in dataclasses#Collections). My understanding is that a collection should behave correctly (inserts, deletes, etc) unless the list its self is serialized. Can you provide a counter-example?
With regards to the article Max Ross wrote (very good article by the way), the trick he used (where he made a copy in order to change the reference) was intended to "dirty" the state when a member is modified. My FooObjects are immutable, so I don't think this applies to me. Max Ross' article is completely consistent with my understanding of the documentation, but it's entirely possible I missed something, so let me know if this doesn't sound right to you. I BELIEVE the issue I'm running into is rooted in the exception I get when trying to persist a populated instance of the list: "FooObject is not a supported property type." I'm just not understanding why it isn't supported. I would have expected that any serializable object would be permitted, especially if the @Element(serialized="true") annotation is specified. Basically, I'm looking for a code fragment that demonstrates the persistence of a collection of (more than one) non-standard serializable objects. Any ideas? Thanks! On Jul 7, 5:05 am, "l.denardo" <lorenzo.dena...@gmail.com> wrote: > Hello, > I guess your problem is the behavior of serialized fields (including > collections of them, as far as I know), which is explained in Max > Ross's post. > Or something related to that. > > Anyway, some property fields are marked as "updated" and hence saved > in the datastore only if you update the reference to the field, and > they're not updated if you just use modifiers to operate on them. > In practice, something like > > ArrayList<Foo> list = "retrieve from datastore" > list.add(Foo foo) > close persistence manager > > Does not modify the list in the datastore, so if it's saved as an > empty list at creation it remains empty. > Doing > > ArrayList<Foo> list = "retrieve from datastore" > ArrayList copy = new ArrayList(list); > copy.add(Foo foo) > list = copy; > close PM > > Usually makes everything work, since the original list field is marked > as "updated" and persisted. > As far as I know this is true both for serialized fields and for many > collections. > > Regards > Lorenzo > > On Jul 7, 1:28 pm, laserjim <laser...@gmail.com> wrote: > > > > > Hello Lorenzo, > > > Thanks, but perhaps my question wasn't clear. I'm trying to make a > > list of serialized objects, NOT a serialized list of objects. > > > For instance, assuming FooObject implements Serializable... > > > @Element(serialized="true) > > List<FooObject> foos = new ArrayList<FooObject>(); > > > Unfortunately, the list is always empty. Not quite sure why. > > > Thanks! > > > On Jul 7, 2:59 am, "l.denardo" <lorenzo.dena...@gmail.com> wrote: > > > > If you are using a serialized field you must add the serialized="true" > > > clause to your annotation > > > > @Persistent(serialized="true") > > > MySerializableObject serializable; > > > > Also notice that JDO does not automatically detect if you update only > > > the inner fields of the object you save, so you must substitute it > > > with a copy to have it persisted. > > > See this post for a very good overview and an explanation of the fact > > > above: > > > >http://groups.google.com/group/google-appengine-java/browse_thread/th... > > > > Regards > > > Lorenzo > > > > On Jul 7, 1:33 am, laserjim <laser...@gmail.com> wrote: > > > > > Hello, > > > > > I'm still trying to persist a list of serializable objects. I would > > > > expect this to be a standard collection as described > > > > here:http://code.google.com/appengine/docs/java/datastore/dataclasses.html... > > > > > FooObject is serializable, but my attempt gave me an exception: > > > > FooObject is not a supported property type. > > > > > Everything works as expected if I replace my serializable class > > > > (FooObject) with String. > > > > > How can I persist my list of FooObjects using JDO? > > > > > Thanks! -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.