ok, thanks.
The second answer is dictated by the fact that I don't want null
values to be returned from getter methods, otherwise I cannot safely
do an operation like:
mySecondObject.getTags().add(tag);
as I need to check if getTags() has returned null.
So, which is the best in your opinion between the two:

mySecondObject.getTags().add(tag1);
mySecondObject.getTags().add(tag2);
pm.makePersistent(mySecondObject);

AND

List<String> tags = mySecondObject.getTags();
if (tags == null)
 tags = neww ArrayList<String>();
tags.add(tag1);
tags.add(tag2);
mySecondObject.setTags(tags);
pm.makePersistent(mySecondObject);

For the "owner"... I'm with you, it is an ugly thing to create a
parent from the child...

Thanks
cghersi

On 30 Ago, 16:52, Frederik Pfisterer <[email protected]> wrote:
> while if I understood your explanation I don't have to invoke
> pm.makePersistent() on mySeconObject, is it?
>
> - correct, it is automatically saved with the parent.
>
> The other answer depends on the use case, but it appears to be very
> bad style to produce an "owner"/parent in the child object... children
> in real life also don't usually generate their parents ;-)
>
> Fred
>
> On 27 Aug., 16:03, cghersi <[email protected]> wrote:
>
>
>
> > Hi Frederik!
>
> > Sorry for my ignorance, I tougth that the right way to save a Second
> > object was:
>
> > pm.makePersistent(mySecondObject);
> > myFirstObject.getList().add(mySecondObject);
> > pm.makePersistent(myFirstObject);
>
> > while if I understood your explanation I don't have to invoke
> > pm.makePersistent() on mySeconObject, is it?
>
> > I also put in all my getter methods a check on null object, in that
> > way:
> > class Second {
> > �...@persistent
> > �...@primarykey
> >  Key id;
> > �...@persistent
> >  First owner;
> > �...@persistent
> >  List<String> tags;
>
> >  First getOwner() {
> >   if (owner==null)
> >    owner = new First();
> >   return owner;
> >  }
>
> >  List<String> getTags() {
> >   if (tags==null)
> >    tags= new ArrayList<String>();
> >   return tags;
> >  }
>
> >  ...
>
> > }
>
> > Do I have to remove all the check of the type if (obj==null)
> > obj=new...?
>
> > Thank you very much for your help!
>
> > Best
> > cghersi
>
> > On 27 Ago, 10:58, Frederik Pfisterer <[email protected]> wrote:
>
> > > Hi,
>
> > > the problem is this line:
> > > owner = new First();
>
> > > Beware that the only way you should ever store a Second object is:
> > > myFirstObject.getList().add(mySecondObject);
> > > pm.makePersistent(myFirstObject);
>
> > > since Second.owner is mapped it's automatically populated by the
> > > persistance manager.
>
> > > Hope this helps,
> > > Fred
>
> > > On 26 Aug., 17:38, cghersi <[email protected]> wrote:
>
> > > > Hi Diego,
>
> > > > thank you but unfortunately I strictly followed what stated in that
> > > > page, and the result is the problem I posted!!
>
> > > > Any other hint?
>
> > > > Thank you very much,
> > > > Best
> > > > Cghersi
>
> > > > On 26 Ago, 16:09, Diego Fernandes <[email protected]> wrote:
>
> > > > > Hi,
> > > > > i may find something 
> > > > > herehttp://code.google.com/intl/en/appengine/docs/java/datastore/relation...
>
> > > > > []'s
> > > > > Diego
>
> > > > > On 26 ago, 04:42, cghersi <[email protected]> wrote:
>
> > > > > > Hi everybody,
>
> > > > > > I'm struggling with a strange problem with JDO.
> > > > > > I've got two PersistenCapable classes, one having a Collection of
> > > > > > objects of the second, something like this:
>
> > > > > > class First {
> > > > > > �...@persistent
> > > > > > �...@primarykey
> > > > > >  Long id;
>
> > > > > > �...@persistent(mappedby="owner")
> > > > > >  ArrayList<Second> list = new ArrayList<Second>();
>
> > > > > >  ArrayList<Second> getList() {
> > > > > >   if (list == null)
> > > > > >    list=new ArrayList<Second>();
> > > > > >   return list;
> > > > > >  }
>
> > > > > > ...
>
> > > > > > }
>
> > > > > > class Second {
> > > > > > �...@persistent
> > > > > > �...@primarykey
> > > > > >  Key id;
>
> > > > > > �...@persistent
> > > > > >  First owner;
>
> > > > > >  First getOwner() {
> > > > > >   if (owner==null)
> > > > > >    owner = new First();
> > > > > >   return owner;
>
> > > > > >  ...
>
> > > > > > }
>
> > > > > > In another class I need to print the owner of all my First objects, 
> > > > > > so
> > > > > > I do:
> > > > > > First obj = ...;
> > > > > > ArrayList<Second> list = obj.getList();
> > > > > > for (Second s : list) {
> > > > > >  System.out.println(s.getOwner());
>
> > > > > > }
>
> > > > > > In this loop, I find some Second object having null owner, and I
> > > > > > cannot understand why.
> > > > > > Now I have several questions about my data modelling:
> > > > > > 1) Do I need to mark any field with (defaultFetchGroup = "true")
> > > > > > annotation?
> > > > > > 2) Does the check on null object (e.g. if (owner==null) owner = new
> > > > > > First();) in the getter methods results in any strange behavior?
> > > > > > 3) Does the assignment on definition of objects (e.g.
> > > > > > ArrayList<Second> list = new ArrayList<Second>();) results in any
> > > > > > strange behavior?
> > > > > > 4) Do I need to add any other annotation to owner field of Second
> > > > > > class?
>
> > > > > > Thank you very much for your help!!
> > > > > > Best regards
> > > > > > cghersi

-- 
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 [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-java?hl=en.

Reply via email to