Key (Google App Engine API for Java)

com.google.appengine.api.datastore

Class Key

  • java.lang.Object
    • com.google.appengine.api.datastore.Key
  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Comparable<Key>


    public final class Key
    extends java.lang.Object
    implements java.io.Serializable, java.lang.Comparable<Key>
    The primary key for a datastore entity.

    A datastore GUID. A Key instance uniquely identifies an entity across all apps, and includes all information necessary to fetch the entity from the datastore with DatastoreService.get(Key).

    You can create Key objects directly by using KeyFactory.createKey(java.lang.String, long) or getChild(java.lang.String, long).

    You can also retrieve the Key automatically created when you create a new Entity, or serialize Key objects, or use KeyFactory to convert them to and from websafe String values.

    See Also:
    KeyFactory, Serialized Form
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method and Description
      int compareTo(Key other)
      Compares two Key objects.
      boolean equals(java.lang.Object object)
      Compares two Key objects by comparing ids, kinds, parent and appIdNamespace.
      java.lang.String getAppId()
      Returns the appId for this Key.
      Key getChild(java.lang.String kind, long id)
      Creates a new key having this as parent and the given numeric identifier.
      Key getChild(java.lang.String kind, java.lang.String name)
      Creates a new key having this as parent and the given name.
      long getId()
      Returns the numeric identifier of this Key.
      java.lang.String getKind()
      Returns the kind of the Entity represented by this Key.
      java.lang.String getName()
      Returns the name of this Key.
      java.lang.String getNamespace()
      Returns the namespace for this Key.
      Key getParent()
      If this Key has a parent, return a Key that represents it.
      int hashCode() 
      boolean isComplete()
      Returns true if this Key has a name specified or has been assigned an identifier.
      java.lang.String toString() 
      • Methods inherited from class java.lang.Object

        getClass, notify, notifyAll, wait, wait, wait
    • Method Detail

      • getKind

        public java.lang.String getKind()
        Returns the kind of the Entity represented by this Key.
      • getParent

        public Key getParent()
        If this Key has a parent, return a Key that represents it. If not, simply return null.
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • equals

        public boolean equals(java.lang.Object object)
        Compares two Key objects by comparing ids, kinds, parent and appIdNamespace. If both keys are assigned names rather than ids, compares names instead of ids. If neither key has an id or a name, the keys are only equal if they reference the same object.
        Overrides:
        equals in class java.lang.Object
      • getAppId

        public java.lang.String getAppId()
        Returns the appId for this Key.
      • getNamespace

        public java.lang.String getNamespace()
        Returns the namespace for this Key.
      • getId

        public long getId()
        Returns the numeric identifier of this Key.
      • getName

        public java.lang.String getName()
        Returns the name of this Key.
      • getChild

        public Key getChild(java.lang.String kind,
                            long id)
        Creates a new key having this as parent and the given numeric identifier. The parent key must be complete.
        Parameters:
        kind - the kind of the child key to create
        id - the numeric identifier of the key in kind, unique for this parent
      • getChild

        public Key getChild(java.lang.String kind,
                            java.lang.String name)
        Creates a new key having this as parent and the given name. The parent key must be complete.
        Parameters:
        kind - the kind of the child key to create
        name - the name of the key in kind, as an arbitrary string unique for this parent
      • isComplete

        public boolean isComplete()
        Returns true if this Key has a name specified or has been assigned an identifier.
      • compareTo

        public int compareTo(Key other)
        Compares two Key objects. The algorithm proceeds as follows: Turn each Key into an iterator where the first element returned is the top-most ancestor, the next element is the child of the previous element, and so on. The last element will be the Key we started with. Once we have assembled these two iterators (one for 'this' and one for the Key we're comparing to), consume them in parallel, comparing the next element from each iterator. If at any point the comparison of these two elements yields a non-zero result, return that as the result of the overall comparison. If we exhaust the iterator built from 'this' before we exhaust the iterator built from the other Key, we return less than. An example:

        app1.type1.4.app1.type2.9 < app1.type1.4.app1.type2.9.app1.type3.2

        If we exhaust the iterator built from the other Key before we exhaust the iterator built from 'this', we return greater than. An example:

        app1.type1.4.app1.type2.9.app1.type3.2 > app1.type1.4.app1.type2.9

        The relationship between individual Key Keys is performed by comparing app followed by kind followed by id. If both keys are assigned names rather than ids, compares names instead of ids. If neither key has an id or a name we return an arbitrary but consistent result. Assuming all other components are equal, all ids are less than all names.

        Specified by:
        compareTo in interface java.lang.Comparable<Key>