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

    Nodes and Relationships are Entities. Entities are attached to transaction in which they were accessed. Outside of transaction its possible only to access entity 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 Detail

      • getId

        long getId()
        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.
      • 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