I don't think it made a difference, if I check the online datastore it
says "<null>" for "selectedTags". I think I am still missing
something.
Here is my other 'tags' class, not sure if it matters for my datastore
relationship :
=======================
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY,
defaultFetchGroup="true")
private Key tagid;
@Persistent(defaultFetchGroup= "true")
private Set<Key> selectedLinks;
@Persistent
private String tagname;
@Persistent
private Date date;
public Tagstore(String tagname, Date date) {
this.tagname = tagname;
this.date = date;
}
public Key getId() {
return tagid;
}
public String getKeyAsString() {
if (tagid == null) return null;
return KeyFactory.keyToString(tagid);
}
public String getTag() {
return tagname;
}
public Date getDate() {
return date;
}
public void setTag(String tagname) {
this.tagname = tagname;
}
public void setDate(Date date) {
this.date = date;
}
=======================
I'm putting "defaultFetchGroup="true"" everywhere hoping it would
help ....
=======================
On Nov 1, 9:11 pm, Rusty Wright <[email protected]> wrote:
> Linkstore doesn't have a no-arg constructor does it? If so, then
> selectedTags could be null. You could change its declaration to
>
> @Persistent(defaultFetchGroup = "true")
> private Set<Key> selectedTags = new HashSet<Key>(0);
>
> I've always initialized my Collections at the declaration.
>
> Just for experimentation, try changing its declaration to that and see what
> happens.
>
> WATCH OUT THOUGH: if you you're using eclipse you may have it configured to
> add a final to fields and variables that are set when they're declared and
> not subsequently written to. If that happens then DataNucleus ignores final
> fields. (I wish I could change some setting to have DN throw an exception in
> that situation.)
>
> dataStorm wrote:
> > Hello, can someone help me with this, I am trying to follow this post
> >http://code.google.com/appengine/docs/java/datastore/relationships.html
> > to
> > create relationship between LINKS and TAGS.
>
> > I am getting an error:
>
> > Caused by:
>
> > java.lang.NullPointerException
> > at com.linkytty.Linkstore.addNewTag(Linkstore.java:101)
> > at com.linkytty.TagLinker.doPost(TagLinker.java:52)
>
> > This happens when I try to add a key using ".add()" :
>
> > public void addNewTag(Key tagKey) {
>
> > selectedTags.add(tagKey);
>
> > }
>
> > addNewTag() is called from my
>
> > PersistenceManager pm = PMF.get().getPersistenceManager();
> > Linkstore linkObject = pm.getObjectById(Linkstore.class, objectKey);
> > linkObject.addNewTag(objectKey);
>
> > I've logged my "objectKey" and etc. and it seems that it gets those
> > right
> > (
> > String linkKeyId = req.getParameter("key");
> > linkKeyID : aghsaW5reXR0eXIPCxIJTGlua3N0b3JlGAUM
>
> > Key objectKey = KeyFactory.stringToKey(linkKeyId);
> > objectKey: Linkstore(5)
> > )
>
> > My Classes:
>
> > the class that creates links:
>
> > public class Linkstore {
>
> > �...@primarykey
> > �...@persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
> > private Key linkid;
>
> > �...@persistent(defaultFetchGroup = "true")
> > private Set<Key> selectedTags;
>
> > //STUFF HERE
>
> > public Linkstore(User author, String linkcontent, String linkcomment,
> > Date
> > date) {
> > this.author = author;
> > this.linkcontent = linkcontent;
> > this.linkcomment = linkcomment;
>
> > this.date = date;
>
> > selectedTags = new HashSet<Key>();
>
> > }
>
> > public Key getId() {
>
> > return linkid;
>
> > }
>
> > public String getKeyAsString() {
> > if (linkid == null)
> > return null;
> > return KeyFactory.keyToString(linkid);
> > }
>
> > // STUFF HERE
>
> > public void addNewTag(Key tagKey) {
>
> > selectedTags.add(tagKey);
>
> > }
>
> > }
>
> > The class that captures the post:
>
> > public void doPost(HttpServletRequest req, HttpServletResponse resp)
> > throws IOException {
>
> > String linkKeyId = req.getParameter("key");
> > Key objectKey = KeyFactory.stringToKey(linkKeyId);
>
> > String tagStringKey = req.getParameter("tagkey");
> > Key tagObjectKey = KeyFactory.stringToKey(tagStringKey);
>
> > PersistenceManager pm = PMF.get().getPersistenceManager();
> > Linkstore linkObject = pm.getObjectById(Linkstore.class,
> > objectKey);
>
> > linkObject.addNewTag(objectKey);
>
> > resp.sendRedirect("/");
> > }
>
> > ///
> > Does the "@Persistent(defaultFetchGroup = "true")" make any
> > difference?
>
> > Help & 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 [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
-~----------~----~----~----~------~----~------~--~---