Class ReactiveNeo4jTemplate

java.lang.Object
org.springframework.data.neo4j.core.ReactiveNeo4jTemplate
All Implemented Interfaces:
Aware, BeanClassLoaderAware, BeanFactoryAware, ReactiveFluentFindOperation, ReactiveFluentNeo4jOperations, ReactiveFluentSaveOperation, ReactiveNeo4jOperations

@API(status=STABLE, since="6.0") public final class ReactiveNeo4jTemplate extends Object implements ReactiveNeo4jOperations, ReactiveFluentNeo4jOperations, BeanClassLoaderAware, BeanFactoryAware
Since:
6.0
Author:
Michael J. Simons, Gerrit Meier, Philipp Tölle
  • Constructor Details

  • Method Details

    • count

      public reactor.core.publisher.Mono<Long> count(Class<?> domainType)
      Description copied from interface: ReactiveNeo4jOperations
      Counts the number of entities of a given type.
      Specified by:
      count in interface ReactiveNeo4jOperations
      Parameters:
      domainType - the type of the entities to be counted.
      Returns:
      the number of instances stored in the database. Guaranteed to be not null.
    • count

      public reactor.core.publisher.Mono<Long> count(org.neo4j.cypherdsl.core.Statement statement)
      Description copied from interface: ReactiveNeo4jOperations
      Counts the number of entities of a given type.
      Specified by:
      count in interface ReactiveNeo4jOperations
      Parameters:
      statement - the Cypher Statement that returns the count.
      Returns:
      the number of instances stored in the database. Guaranteed to be not null.
    • count

      public reactor.core.publisher.Mono<Long> count(org.neo4j.cypherdsl.core.Statement statement, Map<String,Object> parameters)
      Description copied from interface: ReactiveNeo4jOperations
      Counts the number of entities of a given type.
      Specified by:
      count in interface ReactiveNeo4jOperations
      Parameters:
      statement - the Cypher Statement that returns the count.
      parameters - Map of parameters. Must not be null.
      Returns:
      the number of instances stored in the database. Guaranteed to be not null.
    • count

      public reactor.core.publisher.Mono<Long> count(String cypherQuery)
      Description copied from interface: ReactiveNeo4jOperations
      Counts the number of entities of a given type.
      Specified by:
      count in interface ReactiveNeo4jOperations
      Parameters:
      cypherQuery - the Cypher query that returns the count.
      Returns:
      the number of instances stored in the database. Guaranteed to be not null.
    • count

      public reactor.core.publisher.Mono<Long> count(String cypherQuery, Map<String,Object> parameters)
      Description copied from interface: ReactiveNeo4jOperations
      Counts the number of entities of a given type.
      Specified by:
      count in interface ReactiveNeo4jOperations
      Parameters:
      cypherQuery - the Cypher query that returns the count.
      parameters - Map of parameters. Must not be null.
      Returns:
      the number of instances stored in the database. Guaranteed to be not null.
    • findAll

      public <T> reactor.core.publisher.Flux<T> findAll(Class<T> domainType)
      Description copied from interface: ReactiveNeo4jOperations
      Load all entities of a given type.
      Specified by:
      findAll in interface ReactiveNeo4jOperations
      Type Parameters:
      T - the type of the entities. Must not be null.
      Parameters:
      domainType - the type of the entities. Must not be null.
      Returns:
      Guaranteed to be not null.
    • findAll

      public <T> reactor.core.publisher.Flux<T> findAll(org.neo4j.cypherdsl.core.Statement statement, Class<T> domainType)
      Description copied from interface: ReactiveNeo4jOperations
      Load all entities of a given type by executing given statement.
      Specified by:
      findAll in interface ReactiveNeo4jOperations
      Type Parameters:
      T - the type of the entities. Must not be null.
      Parameters:
      statement - Cypher Statement. Must not be null.
      domainType - the type of the entities. Must not be null.
      Returns:
      Guaranteed to be not null.
    • findAll

      public <T> reactor.core.publisher.Flux<T> findAll(org.neo4j.cypherdsl.core.Statement statement, Map<String,Object> parameters, Class<T> domainType)
      Description copied from interface: ReactiveNeo4jOperations
      Load all entities of a given type by executing given statement with parameters.
      Specified by:
      findAll in interface ReactiveNeo4jOperations
      Type Parameters:
      T - the type of the entities. Must not be null.
      Parameters:
      statement - Cypher Statement. Must not be null.
      parameters - Map of parameters. Must not be null.
      domainType - the type of the entities. Must not be null.
      Returns:
      Guaranteed to be not null.
    • findOne

      public <T> reactor.core.publisher.Mono<T> findOne(org.neo4j.cypherdsl.core.Statement statement, Map<String,Object> parameters, Class<T> domainType)
      Description copied from interface: ReactiveNeo4jOperations
      Load one entity of a given type by executing given statement with parameters.
      Specified by:
      findOne in interface ReactiveNeo4jOperations
      Type Parameters:
      T - the type of the entities. Must not be null.
      Parameters:
      statement - Cypher Statement. Must not be null.
      parameters - Map of parameters. Must not be null.
      domainType - the type of the entities. Must not be null.
      Returns:
      Guaranteed to be not null.
    • findAll

      public <T> reactor.core.publisher.Flux<T> findAll(String cypherQuery, Class<T> domainType)
      Description copied from interface: ReactiveNeo4jOperations
      Load all entities of a given type by executing given statement.
      Specified by:
      findAll in interface ReactiveNeo4jOperations
      Type Parameters:
      T - the type of the entities. Must not be null.
      Parameters:
      cypherQuery - Cypher query string. Must not be null.
      domainType - the type of the entities. Must not be null.
      Returns:
      Guaranteed to be not null.
    • findAll

      public <T> reactor.core.publisher.Flux<T> findAll(String cypherQuery, Map<String,Object> parameters, Class<T> domainType)
      Description copied from interface: ReactiveNeo4jOperations
      Load all entities of a given type by executing given statement with parameters.
      Specified by:
      findAll in interface ReactiveNeo4jOperations
      Type Parameters:
      T - the type of the entities. Must not be null.
      Parameters:
      cypherQuery - Cypher query string. Must not be null.
      parameters - Map of parameters. Must not be null.
      domainType - the type of the entities. Must not be null.
      Returns:
      Guaranteed to be not null.
    • findOne

      public <T> reactor.core.publisher.Mono<T> findOne(String cypherQuery, Map<String,Object> parameters, Class<T> domainType)
      Description copied from interface: ReactiveNeo4jOperations
      Load one entity of a given type by executing given statement with parameters.
      Specified by:
      findOne in interface ReactiveNeo4jOperations
      Type Parameters:
      T - the type of the entities. Must not be null.
      Parameters:
      cypherQuery - Cypher query string. Must not be null.
      parameters - Map of parameters. Must not be null.
      domainType - the type of the entities. Must not be null.
      Returns:
      Guaranteed to be not null.
    • find

      public <T> ReactiveFluentFindOperation.ExecutableFind<T> find(Class<T> domainType)
      Description copied from interface: ReactiveFluentFindOperation
      Start creating a find operation for the given domainType.
      Specified by:
      find in interface ReactiveFluentFindOperation
      Parameters:
      domainType - must not be null.
      Returns:
      new instance of ReactiveFluentFindOperation.ExecutableFind.
    • existsById

      public <T> reactor.core.publisher.Mono<Boolean> existsById(Object id, Class<T> domainType)
      Description copied from interface: ReactiveNeo4jOperations
      Check if an entity for a given id exists in the database.
      Specified by:
      existsById in interface ReactiveNeo4jOperations
      Type Parameters:
      T - the type of the entity.
      Parameters:
      id - the id of the entity to check. Must not be null.
      domainType - the type of the entity. Must not be null.
      Returns:
      If entity exists in the database, true, otherwise false.
    • findById

      public <T> reactor.core.publisher.Mono<T> findById(Object id, Class<T> domainType)
      Description copied from interface: ReactiveNeo4jOperations
      Load an entity from the database.
      Specified by:
      findById in interface ReactiveNeo4jOperations
      Type Parameters:
      T - the type of the entity.
      Parameters:
      id - the id of the entity to load. Must not be null.
      domainType - the type of the entity. Must not be null.
      Returns:
      the loaded entity. Might return an empty optional.
    • findAllById

      public <T> reactor.core.publisher.Flux<T> findAllById(Iterable<?> ids, Class<T> domainType)
      Description copied from interface: ReactiveNeo4jOperations
      Load all entities of a given type that are identified by the given ids.
      Specified by:
      findAllById in interface ReactiveNeo4jOperations
      Type Parameters:
      T - the type of the entities. Must not be null.
      Parameters:
      ids - of the entities identifying the entities to load. Must not be null.
      domainType - the type of the entities. Must not be null.
      Returns:
      Guaranteed to be not null.
    • toExecutableQuery

      public <T> reactor.core.publisher.Mono<ReactiveNeo4jOperations.ExecutableQuery<T>> toExecutableQuery(Class<T> domainType, QueryFragmentsAndParameters queryFragmentsAndParameters)
      Description copied from interface: ReactiveNeo4jOperations
      Create an executable query based on query fragment.
      Specified by:
      toExecutableQuery in interface ReactiveNeo4jOperations
      Type Parameters:
      T - The type of the objects returned by this query.
      Parameters:
      domainType - domain class the executable query should return
      queryFragmentsAndParameters - fragments and parameters to construct the query from
      Returns:
      An executable query
    • save

      public <T> reactor.core.publisher.Mono<T> save(T instance)
      Description copied from interface: ReactiveNeo4jOperations
      Saves an instance of an entity, including all the related entities of the entity.
      Specified by:
      save in interface ReactiveNeo4jOperations
      Type Parameters:
      T - the type of the entity.
      Parameters:
      instance - the entity to be saved. Must not be null.
      Returns:
      the saved instance.
    • saveAs

      public <T> reactor.core.publisher.Mono<T> saveAs(T instance, BiPredicate<PropertyPath,Neo4jPersistentProperty> includeProperty)
      Description copied from interface: ReactiveNeo4jOperations
      Saves an instance of an entity, using the provided predicate to shape the stored graph. One can think of the predicate as a dynamic projection. If you want to save or update properties of associations (aka related nodes), you must include the association property as well (meaning the predicate must return true for that property, too).

      Be careful when reusing the returned instance for further persistence operations, as it will most likely not be fully hydrated and without using a static or dynamic projection, you will most likely cause data loss.

      Specified by:
      saveAs in interface ReactiveNeo4jOperations
      Type Parameters:
      T - the type of the entity.
      Parameters:
      instance - the entity to be saved. Must not be null.
      includeProperty - A predicate to determine the properties to save.
      Returns:
      the saved instance.
    • saveAs

      public <T, R> reactor.core.publisher.Mono<R> saveAs(T instance, Class<R> resultType)
      Description copied from interface: ReactiveNeo4jOperations
      Saves an instance of an entity, including the properties and relationship defined by the projected resultType.
      Specified by:
      saveAs in interface ReactiveNeo4jOperations
      Type Parameters:
      T - the type of the entity.
      R - the type of the projection to be used during save.
      Parameters:
      instance - the entity to be saved. Must not be null.
      Returns:
      the saved, projected instance.
    • saveAll

      public <T> reactor.core.publisher.Flux<T> saveAll(Iterable<T> instances)
      Description copied from interface: ReactiveNeo4jOperations
      Saves several instances of an entity, including all the related entities of the entity.
      Specified by:
      saveAll in interface ReactiveNeo4jOperations
      Type Parameters:
      T - the type of the entity.
      Parameters:
      instances - the instances to be saved. Must not be null.
      Returns:
      the saved instances.
    • saveAllAs

      public <T> reactor.core.publisher.Flux<T> saveAllAs(Iterable<T> instances, BiPredicate<PropertyPath,Neo4jPersistentProperty> includeProperty)
      Description copied from interface: ReactiveNeo4jOperations
      Saves several instances of an entity, using the provided predicate to shape the stored graph. One can think of the predicate as a dynamic projection. If you want to save or update properties of associations (aka related nodes), you must include the association property as well (meaning the predicate must return true for that property, too).

      Be careful when reusing the returned instances for further persistence operations, as they will most likely not be fully hydrated and without using a static or dynamic projection, you will most likely cause data loss.

      Specified by:
      saveAllAs in interface ReactiveNeo4jOperations
      Type Parameters:
      T - the type of the entity.
      Parameters:
      instances - the instances to be saved. Must not be null.
      includeProperty - A predicate to determine the properties to save.
      Returns:
      the saved instances.
    • saveAllAs

      public <T, R> reactor.core.publisher.Flux<R> saveAllAs(Iterable<T> instances, Class<R> resultType)
      Description copied from interface: ReactiveNeo4jOperations
      Saves several instances of an entity, including the properties and relationship defined by the project resultType.
      Specified by:
      saveAllAs in interface ReactiveNeo4jOperations
      Type Parameters:
      T - the type of the entity.
      R - the type of the projection to be used during save.
      Parameters:
      instances - the instances to be saved. Must not be null.
      Returns:
      the saved, projected instance.
    • deleteAllById

      public <T> reactor.core.publisher.Mono<Void> deleteAllById(Iterable<?> ids, Class<T> domainType)
      Description copied from interface: ReactiveNeo4jOperations
      Deletes all entities with one of the given ids, including all entities related to that entity.
      Specified by:
      deleteAllById in interface ReactiveNeo4jOperations
      Type Parameters:
      T - the type of the entity.
      Parameters:
      ids - the ids of the entities to be deleted. Must not be null.
      domainType - the type of the entity
    • deleteById

      public <T> reactor.core.publisher.Mono<Void> deleteById(Object id, Class<T> domainType)
      Description copied from interface: ReactiveNeo4jOperations
      Deletes a single entity including all entities related to that entity.
      Specified by:
      deleteById in interface ReactiveNeo4jOperations
      Type Parameters:
      T - the type of the entity.
      Parameters:
      id - the id of the entity to be deleted. Must not be null.
      domainType - the type of the entity
    • deleteByIdWithVersion

      public <T> reactor.core.publisher.Mono<Void> deleteByIdWithVersion(Object id, Class<T> domainType, Neo4jPersistentProperty versionProperty, Object versionValue)
      Specified by:
      deleteByIdWithVersion in interface ReactiveNeo4jOperations
    • deleteAll

      public reactor.core.publisher.Mono<Void> deleteAll(Class<?> domainType)
      Description copied from interface: ReactiveNeo4jOperations
      Delete all entities of a given type.
      Specified by:
      deleteAll in interface ReactiveNeo4jOperations
      Parameters:
      domainType - type of the entities to be deleted. Must not be null.
    • toExecutableQuery

      public <T> reactor.core.publisher.Mono<ReactiveNeo4jOperations.ExecutableQuery<T>> toExecutableQuery(PreparedQuery<T> preparedQuery)
      Description copied from interface: ReactiveNeo4jOperations
      Takes a prepared query, containing all the information about the cypher template to be used, needed parameters and an optional mapping function, and turns it into an executable query.
      Specified by:
      toExecutableQuery in interface ReactiveNeo4jOperations
      Type Parameters:
      T - The type of the objects returned by this query.
      Parameters:
      preparedQuery - prepared query that should get converted to an executable query
      Returns:
      An executable query
    • setBeanFactory

      public void setBeanFactory(BeanFactory beanFactory) throws BeansException
      Specified by:
      setBeanFactory in interface BeanFactoryAware
      Throws:
      BeansException
    • setBeanClassLoader

      public void setBeanClassLoader(ClassLoader classLoader)
      Specified by:
      setBeanClassLoader in interface BeanClassLoaderAware
    • save

      public <T> ReactiveFluentSaveOperation.ExecutableSave<T> save(Class<T> domainType)
      Description copied from interface: ReactiveFluentSaveOperation
      Start creating a save operation for the given domainType.
      Specified by:
      save in interface ReactiveFluentSaveOperation
      Parameters:
      domainType - must not be null.
      Returns:
      new instance of ReactiveFluentSaveOperation.ExecutableSave.