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.
