Hi,
I am failing to retrieve child-objects in a one-to-many JDO relation
in the datastore. The case is as follows;
I have two classes (Parent & Child, code-snippet below) with a defined
one-to-many relation.
It is no problem storing the structure with the 'store'-operation
defined below. This is easily verified by web-browsing the datastore.
However, when retrievning the parent-object from the datastore
('fetchParents'), the ''childs' attribute is always null. What must be
done to (auto-)populate this attribute from the datastore?
Also, the 'parent'-attribute of the Child-objects will also be null if
they are fetched in a similar way.
All clues appreciated...
Lars
- - - - - - - Code samples below - - - - - -
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class ParentDTO {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
@Extension(vendorName="datanucleus", key="gae.encoded-pk",
value="true")
private String encodedKey;
@Persistent
public String name;
@Persistent(mappedBy="parent")
public List<Child> childs;
public ParentDTO()
{
}
public void add(Child c)
{
if (childs == null)
childs = new ArrayList<Child>();
kids.add(c);
}
}
- - - -
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Child {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
@Extension(vendorName="datanucleus", key="gae.encoded-pk",
value="true")
public String encodedKey;
@Persistent
public String name;
@Persistent
public Parent parent;
public Child()
{
}
public String getEncodedKey() {
return encodedKey;
}
}
- - - - -
Storing to datastore (works perfectly)
public void store()
{
Parent p = new Parent();
p.navn = "nils";
Child c = new Child();
c.name = "jim";
p.add(c);
c = new ChildDTO();
c.name = "anne";
p.add(c);
PersistenceManager pm =
PMF.get().getPersistenceManager();
try {
pm.makePersistent(p);
} catch (Exception ee) {
res = ee.getMessage();
} finally {
pm.close();
}
}
- - - - - - Fetching data (not working)
public String fetchParents()
{
String res = "";
PersistenceManager pm = PMF.get().getPersistenceManager();
javax.jdo.Query query = pm.newQuery(Parent.class);
List<Parent> parents = (List<Parent>) query.execute();
Iterator<Parent> iterF = parents.iterator();
while (iterF.hasNext()) {
Parent f = iterF.next();
res = res + ":" + f.name;
if (f.childs != null) { // this is the problem
- 'this.childs' is
always null
Iterator<Child> iterI =
f.childs.iterator();
while (iterI.hasNext()) {
Child idto = iterI.next();
res = res + ">" + idto.name;
}
}
}
pm.close();
}
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---