Class Key
- All Implemented Interfaces:
Serializable,Comparable<Key>
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:
-
Method Summary
Modifier and TypeMethodDescriptionintCompares twoKeyobjects.booleanCompares twoKeyobjects by comparing ids, kinds, parent and appIdNamespace.getAppId()Returns the appId for thisKey.Creates a new key havingthisas parent and the given numeric identifier.Creates a new key havingthisas parent and the given name.longgetId()Returns the numeric identifier of thisKey.getKind()Returns the kind of theEntityrepresented by thisKey.@Nullable StringgetName()Returns the name of thisKey.Returns the namespace for thisKey.@Nullable KeyIf thisKeyhas a parent, return aKeythat represents it.inthashCode()booleanReturns true if this Key has a name specified or has been assigned an identifier.toString()
-
Method Details
-
getKind
Returns the kind of theEntityrepresented by thisKey. -
getParent
If thisKeyhas a parent, return aKeythat represents it. If not, simply return null. -
hashCode
public int hashCode() -
toString
-
equals
Compares twoKeyobjects 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. -
getAppId
Returns the appId for thisKey. -
getNamespace
Returns the namespace for thisKey. -
getId
public long getId()Returns the numeric identifier of thisKey. -
getName
Returns the name of thisKey. -
getChild
Creates a new key havingthisas parent and the given numeric identifier. The parent key must be complete.- Parameters:
kind- the kind of the child key to createid- the numeric identifier of the key inkind, unique for this parent
-
getChild
Creates a new key havingthisas parent and the given name. The parent key must be complete.- Parameters:
kind- the kind of the child key to createname- the name of the key inkind, 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
Compares twoKeyobjects. The algorithm proceeds as follows: Turn eachKeyinto 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 theKeywe started with. Once we have assembled these two iterators (one for 'this' and one for theKeywe'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 otherKey, we return less than. An example:app1.type1.4.app1.type2.9 < app1.type1.4.app1.type2.9.app1.type3.2If we exhaust the iterator built from the other
Keybefore 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.9The relationship between individual
Key Keysis 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:
compareToin interfaceComparable<Key>
-