Interface Entity

All Known Subinterfaces:
Node, Relationship

public interface Entity
An Entity is a Entity that is persisted in the database, and identified by an getElementId() element id}.

Nodes and Relationships are Entities. Entities are attached to transaction in which they were accessed. Outside of transaction it's possible only to access an entity's element id. All other methods should be called only in the scope of the owning transaction. Defines a common API for handling properties on both nodes and relationships.

Properties are key-value pairs. The keys are always strings. Valid property value types are all the Java primitives (int, byte, float, etc), java.lang.Strings, the Spatial and Temporal types and arrays of any of these.

The complete list of currently supported property types is:

  • boolean
  • byte
  • short
  • int
  • long
  • float
  • double
  • char
  • java.lang.String
  • org.neo4j.graphdb.spatial.Point
  • java.time.LocalDate
  • java.time.OffsetTime
  • java.time.LocalTime
  • java.time.ZonedDateTime
    It is also possible to use java.time.OffsetDateTime and it will be converted to a ZonedDateTime internally.
  • java.time.LocalDateTime
  • java.time.temporal.TemporalAmount
    There are two concrete implementations of this interface, java.time.Duration and java.time.Period which will be converted to a single Neo4j Duration type. This means loss of type information, so properties of this type, when read back using getProperty will be only of type java.time.temporal.TemporalAmount.
  • Arrays of any of the above types, for example int[], String[] or LocalTime[]

Please note that Neo4j does NOT accept arbitrary objects as property values. setProperty() takes a java.lang.Object only to avoid an explosion of overloaded setProperty() methods.

  • Method Details

    • getId

      @Deprecated(since="5.0", forRemoval=true) long getId()
      Deprecated, for removal: This API element is subject to removal in a future version.
      in favor of getElementId().
      Returns the unique id of this entity. Id's are reused over time so they are only guaranteed to be unique during a specific transaction: if the entity is deleted, it is likely that some new entity will reuse this id at some point.
      Returns:
      The id of this Entity.
    • getElementId

      String getElementId()
      Returns the unique element id of this entity. Id's are reused over time so they are only guaranteed to be unique during a specific transaction: if the entity is deleted, it is likely that some new entity will reuse this id at some point.
      Returns:
      The element id of this Entity.
    • hasProperty

      boolean hasProperty(String key)
      Returns true if this property container has a property accessible through the given key, false otherwise. If key is null, this method returns false.
      Parameters:
      key - the property key
      Returns:
      true if this property container has a property accessible through the given key, false otherwise
    • getProperty

      Object getProperty(String key)
      Returns the property value associated with the given key. The value is of one of the valid property types, i.e. a Java primitive, a String, a Point, a valid temporal type, or an array of any of the valid types. See the the class description for a full list of known types.

      If there's no property associated with key an unchecked exception is raised. The idiomatic way to avoid an exception for an unknown key and instead get null back is to use a default value: Object valueOrNull = nodeOrRel.getProperty( key, null )

      Parameters:
      key - the property key
      Returns:
      the property value associated with the given key
      Throws:
      NotFoundException - if there's no property associated with key
    • getProperty

      Object getProperty(String key, Object defaultValue)
      Returns the property value associated with the given key, or a default value. The value is of one of the valid property types, i.e. a Java primitive, a String, a Point, a valid temporal type, or an array of any of the valid types. See the the class description for a full list of known types.
      Parameters:
      key - the property key
      defaultValue - the default value that will be returned if no property value was associated with the given key
      Returns:
      the property value associated with the given key
    • setProperty

      void setProperty(String key, Object value)
      Sets the property value for the given key to value. The property value must be one of the valid property types, i.e. a Java primitive, a String, a Point, a valid temporal type, or an array of any of the valid types. See the the class description for a full list of known types.

      This means that null is not an accepted property value.

      Parameters:
      key - the key with which the new property value will be associated
      value - the new property value, of one of the valid property types
      Throws:
      IllegalArgumentException - if value is of an unsupported type (including null)
    • removeProperty

      Object removeProperty(String key)
      Removes the property associated with the given key and returns the old value. If there's no property associated with the key, null will be returned.
      Parameters:
      key - the property key
      Returns:
      the property value that used to be associated with the given key
    • getPropertyKeys

      Iterable<String> getPropertyKeys()
      Returns all existing property keys, or an empty iterable if this property container has no properties.
      Returns:
      all property keys on this property container
    • getProperties

      Map<String,Object> getProperties(String... keys)
      Returns specified existing properties. The collection is mutable, but changing it has no impact on the graph as the data is detached.
      Parameters:
      keys - the property keys to return
      Returns:
      specified properties on this property container
      Throws:
      NullPointerException - if the array of keys or any key is null
    • getAllProperties

      Map<String,Object> getAllProperties()
      Returns all existing properties.
      Returns:
      all properties on this property container
    • delete

      void delete()
      Deletes this entity.
      Throws:
      NotFoundException - if any methods are invoked on this entity after delete()