Hi Anna,

There are various ways to approach this (others may well suggest other
(better?) ones....

1.  Expose your encoded key strings using code like:

  @PrimaryKey
  @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
  @Extension(vendorName="datanucleus", key="gae.encoded-pk",
value="true")
  private String sEncodedKey;

  // Optional (see my way 2 below)
  @Persistent
  @Extension(vendorName="datanucleus", key="gae.pk-id", value="true")
  private Long loID;

  public String getEncodedKey()
  {
    return sEncodedKey;
  }

  // Optional (see my way 2 below)
  public Long getID()
  {
    return loID;
  }


2.  Continue with using encoded primary key strings (mine are
automatically generated by the datastore for each entity at first-
persistence-time) and then expose the entity's Long ID value (again,
mine are automatically generated by the datastore for each entity at
first-persistence-time) using:

  @Persistent
  @Extension(vendorName="datanucleus", key="gae.pk-id", value="true")
  private Long loID;

  public Long getID()
  {
    return loID;
  }

Beware that in this case, the Long ID values are not the full key,
just a summary: you will need a full chain starting with the entity
group parent and working down through the children to your entity
(unless your entity is the parent of its entity group). I do find
entities by (Long) ID, but need IDs of entity group ancestors to get
this to work.

3.  Use Long IDs as your keys. I do not do this any more because of
previously-existing bugs which I worked around by using encoded key
strings and also to maintain some portability to outside of BigTable.
I therefore cannot speak about this from recent experience.

I hope that this helps,

Ian



On Jun 7, 8:29 pm, Anna <[email protected]> wrote:
> Thank you very much Ian! I've implemented your solution but now I
> struggle with adding a Link to the database: A record of entity 1 and
> one of entity 2 are stored in the database. How can I get them out of
> the database to put their keys into a new link? I don't know the keys
> of both entities because I never use them to identify the objects (I
> use Long values instead).
>
> Regards, Anna

-- 
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