com.google.appengine.api.datastore

## Class Entity

- java.lang.Object
- - com.google.appengine.api.datastore.PropertyContainer
  - - com.google.appengine.api.datastore.Entity

- All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable

      public final class Entity
      extends PropertyContainer
      implements java.lang.Cloneable

  `Entity` is the fundamental unit of data storage. It has an immutable identifier (contained in the `Key`) object, a reference to an optional parent `Entity`, a kind (represented as an arbitrary string), and a set of zero or more typed properties.
  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `KEY_RESERVED_PROPERTY` A reserved property name used to refer to the key of the entity.
    `static java.lang.String` | `SCATTER_RESERVED_PROPERTY` A reserved property name used to refer to the scatter property of the entity.
    `static java.lang.String` | `VERSION_RESERVED_PROPERTY` A reserved property name used to report an entity group's version.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Entity(Key key)` Create a new `Entity` uniquely identified by the provided `Key`.
    `Entity(java.lang.String kind)` Create a new `Entity` with the specified kind and no parent `Entity`.
    `Entity(java.lang.String kind, Key parent)` Create a new `Entity` with the specified kind and parent `Entity`.
    `Entity(java.lang.String kind, long id)` Create a new `Entity` with the specified kind and ID and no parent `Entity`.
    `Entity(java.lang.String kind, long id, Key parent)` Create a new `Entity` with the specified kind and ID and parent `Entity`.
    `Entity(java.lang.String kind, java.lang.String keyName)` Create a new `Entity` with the specified kind and key name and no parent `Entity`.
    `Entity(java.lang.String kind, java.lang.String keyName, Key parent)` Create a new `Entity` with the specified kind, key name, and parent `Entity`.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `Entity` | `clone()` Returns a shallow copy of this `Entity` instance.
    `boolean` | `equals(java.lang.Object object)` Two `Entity` objects are considered equal if they refer to the same entity (i.e.
    `java.lang.String` | `getAppId()` Returns the identifier of the application that owns this `Entity`.
    `Key` | `getKey()` Returns the `Key` that represents this `Entity`.
    `java.lang.String` | `getKind()` Returns a logical type that is associated with this `Entity`.
    `java.lang.String` | `getNamespace()` Returns the namespace of the application/namespace that owns this `Entity`.
    `Key` | `getParent()` Get a `Key` that corresponds to this the parent `Entity` of this `Entity`.
    `int` | `hashCode()`
    `void` | `setPropertiesFrom(Entity src)`
    `java.lang.String` | `toString()`

    - ### Methods inherited from class com.google.appengine.api.datastore.PropertyContainer

      `getProperties, getProperty, hasProperty, isUnindexedProperty, removeProperty, setPropertiesFrom, setProperty, setUnindexedProperty`

    - ### Methods inherited from class java.lang.Object

      `getClass, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### KEY_RESERVED_PROPERTY

          public static final java.lang.String KEY_RESERVED_PROPERTY

      A reserved property name used to refer to the key of the entity. This string can be used for filtering and sorting by the entity key itself.
      See Also:
        Constant Field Values

    - #### SCATTER_RESERVED_PROPERTY

          public static final java.lang.String SCATTER_RESERVED_PROPERTY

      A reserved property name used to refer to the scatter property of the entity. Used for finding split points (e.g. for mapping over a kind).
      See Also:
        Constant Field Values

    - #### VERSION_RESERVED_PROPERTY

          public static final java.lang.String VERSION_RESERVED_PROPERTY

      A reserved property name used to report an entity group's version.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### Entity

          public Entity(java.lang.String kind)

      Create a new `Entity` with the specified kind and no parent `Entity`. The instantiated `Entity` will have an incomplete `Key` when this constructor returns. The `Key` will remain incomplete until you put the `Entity`, after which time the `Key` will have its `id` set.

    - #### Entity

          public Entity(java.lang.String kind,
                Key parent)

      Create a new `Entity` with the specified kind and parent `Entity`. The instantiated `Entity` will have an incomplete `Key` when this constructor returns. The `Key` will remain incomplete until you put the `Entity`, after which time the `Key` will have its `id` set.

    - #### Entity

          public Entity(java.lang.String kind,
                java.lang.String keyName)

      Create a new `Entity` with the specified kind and key name and no parent `Entity`. The instantiated `Entity` will have a complete `Key` when this constructor returns. The `Key's` `name` field will be set to the value of `keyName`.

      This constructor is syntactic sugar for `new Entity(KeyFactory.createKey(kind, keyName))`.

    - #### Entity

          public Entity(java.lang.String kind,
                long id)

      Create a new `Entity` with the specified kind and ID and no parent `Entity`. The instantiated `Entity` will have a complete `Key` when this constructor returns. The `Key's` `id` field will be set to the value of `id`.

      Creating an entity for the purpose of insertion (as opposed to update) with this constructor is discouraged unless the id was obtained from a key returned by a `KeyRange` obtained from `AsyncDatastoreService.allocateIds(String, long)` or `DatastoreService.allocateIds(String, long)` for the same kind.

      This constructor is syntactic sugar for `new Entity(KeyFactory.createKey(kind, id))`.

    - #### Entity

          public Entity(java.lang.String kind,
                java.lang.String keyName,
                Key parent)

      Create a new `Entity` with the specified kind, key name, and parent `Entity`. The instantiated `Entity` will have a complete `Key` when this constructor returns. The `Key's` `name` field will be set to the value of `keyName`.

      This constructor is syntactic sugar for `new Entity(KeyFactory.createKey(parent, kind, keyName))`.

    - #### Entity

          public Entity(java.lang.String kind,
                long id,
                Key parent)

      Create a new `Entity` with the specified kind and ID and parent `Entity`. The instantiated `Entity` will have a complete `Key` when this constructor returns. The `Key's` `id` field will be set to the value of `id`.

      Creating an entity for the purpose of insertion (as opposed to update) with this constructor is discouraged unless the id was obtained from a key returned by a `KeyRange` obtained from `AsyncDatastoreService.allocateIds(Key, String, long)` or `DatastoreService.allocateIds(Key, String, long)` for the same parent and kind.

      This constructor is syntactic sugar for `new Entity(KeyFactory.createKey(parent, kind, id))`.

    - #### Entity

          public Entity(Key key)

      Create a new `Entity` uniquely identified by the provided `Key`. Creating an entity for the purpose of insertion (as opposed to update) with a key that has its `id` field set is strongly discouraged unless the key was returned by a `KeyRange`.
      See Also:
        `KeyRange`

  - ### Method Detail

    - #### equals

          public boolean equals(java.lang.Object object)

      Two `Entity` objects are considered equal if they refer to the same entity (i.e. their `Key` objects match).
      Overrides:
        `equals` in class `java.lang.Object`

    - #### getKey

          public Key getKey()

      Returns the `Key` that represents this `Entity`. If the entity has not yet been saved (e.g. via `DatastoreService.put`), this `Key` will not be fully specified and cannot be used for certain operations (like `DatastoreService.get`). Once the `Entity` has been saved, its `Key` will be updated to be fully specified.

    - #### getKind

          public java.lang.String getKind()

      Returns a logical type that is associated with this `Entity`. This is simply a convenience method that forwards to the `Key` for this `Entity`.

    - #### getParent

          public Key getParent()

      Get a `Key` that corresponds to this the parent `Entity` of this `Entity`. This is simply a convenience method that forwards to the `Key` for this `Entity`.

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `java.lang.Object`

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`

    - #### getAppId

          public java.lang.String getAppId()

      Returns the identifier of the application that owns this `Entity`. This is simply a convenience method that forwards to the `Key` for this `Entity`.

    - #### getNamespace

          public java.lang.String getNamespace()

      Returns the namespace of the application/namespace that owns this `Entity`. This is simply a convenience method that forwards to the `Key` for this `Entity`.

    - #### clone

          public Entity clone()

      Returns a shallow copy of this `Entity` instance. `Collection` properties are cloned as an `ArrayList`, the type returned from the datastore. Instances of mutable datastore types are cloned as well. Instances of all other types are reused.
      Returns:
        a shallow copy of this `Entity`

    - #### setPropertiesFrom

          public void setPropertiesFrom(Entity src)