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
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.springframework.data.neo4j.core.ReactiveFluentFindOperation
ReactiveFluentFindOperation.ExecutableFind<T>, ReactiveFluentFindOperation.FindWithProjection<T>, ReactiveFluentFindOperation.FindWithQuery<T>, ReactiveFluentFindOperation.TerminatingFind<T>, ReactiveFluentFindOperation.TerminatingFindWithoutQuery<T>Nested classes/interfaces inherited from interface org.springframework.data.neo4j.core.ReactiveFluentSaveOperation
ReactiveFluentSaveOperation.ExecutableSave<DT>Nested classes/interfaces inherited from interface org.springframework.data.neo4j.core.ReactiveNeo4jOperations
ReactiveNeo4jOperations.ExecutableQuery<T> -
Constructor Summary
ConstructorsConstructorDescriptionReactiveNeo4jTemplate(ReactiveNeo4jClient neo4jClient, Neo4jMappingContext neo4jMappingContext) ReactiveNeo4jTemplate(ReactiveNeo4jClient neo4jClient, Neo4jMappingContext neo4jMappingContext, ReactiveTransactionManager transactionManager) -
Method Summary
Modifier and TypeMethodDescriptionreactor.core.publisher.Mono<Long>Counts the number of entities of a given type.reactor.core.publisher.Mono<Long>Counts the number of entities of a given type.reactor.core.publisher.Mono<Long>Counts the number of entities of a given type.reactor.core.publisher.Mono<Long>count(org.neo4j.cypherdsl.core.Statement statement) Counts the number of entities of a given type.reactor.core.publisher.Mono<Long>Counts the number of entities of a given type.reactor.core.publisher.Mono<Void>Delete all entities of a given type.<T> reactor.core.publisher.Mono<Void>deleteAllById(Iterable<?> ids, Class<T> domainType) Deletes all entities with one of the given ids, including all entities related to that entity.<T> reactor.core.publisher.Mono<Void>deleteById(Object id, Class<T> domainType) Deletes a single entity including all entities related to that entity.<T> reactor.core.publisher.Mono<Void>deleteByIdWithVersion(Object id, Class<T> domainType, Neo4jPersistentProperty versionProperty, Object versionValue) <T> reactor.core.publisher.Mono<Boolean>existsById(Object id, Class<T> domainType) Check if an entity for a given id exists in the database.Start creating a find operation for the given domainType.<T> reactor.core.publisher.Flux<T>Load all entities of a given type.<T> reactor.core.publisher.Flux<T>Load all entities of a given type by executing given statement.<T> reactor.core.publisher.Flux<T>Load all entities of a given type by executing given statement with parameters.<T> reactor.core.publisher.Flux<T>Load all entities of a given type by executing given statement.<T> reactor.core.publisher.Flux<T>findAll(org.neo4j.cypherdsl.core.Statement statement, Map<String, Object> parameters, Class<T> domainType) Load all entities of a given type by executing given statement with parameters.<T> reactor.core.publisher.Flux<T>findAllById(Iterable<?> ids, Class<T> domainType) Load all entities of a given type that are identified by the given ids.<T> reactor.core.publisher.Mono<T>Load an entity from the database.<T> reactor.core.publisher.Mono<T>Load one entity of a given type by executing given statement with parameters.<T> reactor.core.publisher.Mono<T>findOne(org.neo4j.cypherdsl.core.Statement statement, Map<String, Object> parameters, Class<T> domainType) Load one entity of a given type by executing given statement with parameters.Start creating a save operation for the given domainType.<T> reactor.core.publisher.Mono<T>save(T instance) Saves an instance of an entity, including all the related entities of the entity.<T> reactor.core.publisher.Flux<T>Saves several instances of an entity, including all the related entities of the entity.<T,R> reactor.core.publisher.Flux<R> Saves several instances of an entity, including the properties and relationship defined by the projectresultType.<T> reactor.core.publisher.Flux<T>saveAllAs(Iterable<T> instances, BiPredicate<PropertyPath, Neo4jPersistentProperty> includeProperty) Saves several instances of an entity, using the provided predicate to shape the stored graph.<T,R> reactor.core.publisher.Mono<R> Saves an instance of an entity, including the properties and relationship defined by the projectedresultType.<T> reactor.core.publisher.Mono<T>saveAs(T instance, BiPredicate<PropertyPath, Neo4jPersistentProperty> includeProperty) Saves an instance of an entity, using the provided predicate to shape the stored graph.voidsetBeanClassLoader(ClassLoader classLoader) voidsetBeanFactory(BeanFactory beanFactory) <T> reactor.core.publisher.Mono<ReactiveNeo4jOperations.ExecutableQuery<T>>toExecutableQuery(Class<T> domainType, QueryFragmentsAndParameters queryFragmentsAndParameters) Create an executable query based on query fragment.<T> reactor.core.publisher.Mono<ReactiveNeo4jOperations.ExecutableQuery<T>>toExecutableQuery(PreparedQuery<T> preparedQuery) 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.
-
Constructor Details
-
ReactiveNeo4jTemplate
public ReactiveNeo4jTemplate(ReactiveNeo4jClient neo4jClient, Neo4jMappingContext neo4jMappingContext) -
ReactiveNeo4jTemplate
public ReactiveNeo4jTemplate(ReactiveNeo4jClient neo4jClient, Neo4jMappingContext neo4jMappingContext, @Nullable ReactiveTransactionManager transactionManager)
-
-
Method Details
-
count
Description copied from interface:ReactiveNeo4jOperationsCounts the number of entities of a given type.- Specified by:
countin interfaceReactiveNeo4jOperations- 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
Description copied from interface:ReactiveNeo4jOperationsCounts the number of entities of a given type.- Specified by:
countin interfaceReactiveNeo4jOperations- Parameters:
statement- the CypherStatementthat 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:ReactiveNeo4jOperationsCounts the number of entities of a given type.- Specified by:
countin interfaceReactiveNeo4jOperations- Parameters:
statement- the CypherStatementthat returns the count.parameters- Map of parameters. Must not benull.- Returns:
- the number of instances stored in the database. Guaranteed to be not
null.
-
count
Description copied from interface:ReactiveNeo4jOperationsCounts the number of entities of a given type.- Specified by:
countin interfaceReactiveNeo4jOperations- Parameters:
cypherQuery- the Cypher query that returns the count.- Returns:
- the number of instances stored in the database. Guaranteed to be not
null.
-
count
Description copied from interface:ReactiveNeo4jOperationsCounts the number of entities of a given type.- Specified by:
countin interfaceReactiveNeo4jOperations- Parameters:
cypherQuery- the Cypher query that returns the count.parameters- Map of parameters. Must not benull.- Returns:
- the number of instances stored in the database. Guaranteed to be not
null.
-
findAll
Description copied from interface:ReactiveNeo4jOperationsLoad all entities of a given type.- Specified by:
findAllin interfaceReactiveNeo4jOperations- Type Parameters:
T- the type of the entities. Must not benull.- Parameters:
domainType- the type of the entities. Must not benull.- 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:ReactiveNeo4jOperationsLoad all entities of a given type by executing given statement.- Specified by:
findAllin interfaceReactiveNeo4jOperations- Type Parameters:
T- the type of the entities. Must not benull.- Parameters:
statement- CypherStatement. Must not benull.domainType- the type of the entities. Must not benull.- 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:ReactiveNeo4jOperationsLoad all entities of a given type by executing given statement with parameters.- Specified by:
findAllin interfaceReactiveNeo4jOperations- Type Parameters:
T- the type of the entities. Must not benull.- Parameters:
statement- CypherStatement. Must not benull.parameters- Map of parameters. Must not benull.domainType- the type of the entities. Must not benull.- 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:ReactiveNeo4jOperationsLoad one entity of a given type by executing given statement with parameters.- Specified by:
findOnein interfaceReactiveNeo4jOperations- Type Parameters:
T- the type of the entities. Must not benull.- Parameters:
statement- CypherStatement. Must not benull.parameters- Map of parameters. Must not benull.domainType- the type of the entities. Must not benull.- Returns:
- Guaranteed to be not
null.
-
findAll
Description copied from interface:ReactiveNeo4jOperationsLoad all entities of a given type by executing given statement.- Specified by:
findAllin interfaceReactiveNeo4jOperations- Type Parameters:
T- the type of the entities. Must not benull.- Parameters:
cypherQuery- Cypher query string. Must not benull.domainType- the type of the entities. Must not benull.- 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:ReactiveNeo4jOperationsLoad all entities of a given type by executing given statement with parameters.- Specified by:
findAllin interfaceReactiveNeo4jOperations- Type Parameters:
T- the type of the entities. Must not benull.- Parameters:
cypherQuery- Cypher query string. Must not benull.parameters- Map of parameters. Must not benull.domainType- the type of the entities. Must not benull.- 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:ReactiveNeo4jOperationsLoad one entity of a given type by executing given statement with parameters.- Specified by:
findOnein interfaceReactiveNeo4jOperations- Type Parameters:
T- the type of the entities. Must not benull.- Parameters:
cypherQuery- Cypher query string. Must not benull.parameters- Map of parameters. Must not benull.domainType- the type of the entities. Must not benull.- Returns:
- Guaranteed to be not
null.
-
find
Description copied from interface:ReactiveFluentFindOperationStart creating a find operation for the given domainType.- Specified by:
findin interfaceReactiveFluentFindOperation- Parameters:
domainType- must not be null.- Returns:
- new instance of
ReactiveFluentFindOperation.ExecutableFind.
-
existsById
Description copied from interface:ReactiveNeo4jOperationsCheck if an entity for a given id exists in the database.- Specified by:
existsByIdin interfaceReactiveNeo4jOperations- Type Parameters:
T- the type of the entity.- Parameters:
id- the id of the entity to check. Must not benull.domainType- the type of the entity. Must not benull.- Returns:
- If entity exists in the database, true, otherwise false.
-
findById
Description copied from interface:ReactiveNeo4jOperationsLoad an entity from the database.- Specified by:
findByIdin interfaceReactiveNeo4jOperations- Type Parameters:
T- the type of the entity.- Parameters:
id- the id of the entity to load. Must not benull.domainType- the type of the entity. Must not benull.- Returns:
- the loaded entity. Might return an empty optional.
-
findAllById
Description copied from interface:ReactiveNeo4jOperationsLoad all entities of a given type that are identified by the given ids.- Specified by:
findAllByIdin interfaceReactiveNeo4jOperations- Type Parameters:
T- the type of the entities. Must not benull.- Parameters:
ids- of the entities identifying the entities to load. Must not benull.domainType- the type of the entities. Must not benull.- 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:ReactiveNeo4jOperationsCreate an executable query based on query fragment.- Specified by:
toExecutableQueryin interfaceReactiveNeo4jOperations- Type Parameters:
T- The type of the objects returned by this query.- Parameters:
domainType- domain class the executable query should returnqueryFragmentsAndParameters- 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:ReactiveNeo4jOperationsSaves an instance of an entity, including all the related entities of the entity.- Specified by:
savein interfaceReactiveNeo4jOperations- Type Parameters:
T- the type of the entity.- Parameters:
instance- the entity to be saved. Must not benull.- Returns:
- the saved instance.
-
saveAs
public <T> reactor.core.publisher.Mono<T> saveAs(T instance, BiPredicate<PropertyPath, Neo4jPersistentProperty> includeProperty) Description copied from interface:ReactiveNeo4jOperationsSaves 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:
saveAsin interfaceReactiveNeo4jOperations- Type Parameters:
T- the type of the entity.- Parameters:
instance- the entity to be saved. Must not benull.includeProperty- A predicate to determine the properties to save.- Returns:
- the saved instance.
-
saveAs
Description copied from interface:ReactiveNeo4jOperationsSaves an instance of an entity, including the properties and relationship defined by the projectedresultType.- Specified by:
saveAsin interfaceReactiveNeo4jOperations- 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 benull.- Returns:
- the saved, projected instance.
-
saveAll
Description copied from interface:ReactiveNeo4jOperationsSaves several instances of an entity, including all the related entities of the entity.- Specified by:
saveAllin interfaceReactiveNeo4jOperations- Type Parameters:
T- the type of the entity.- Parameters:
instances- the instances to be saved. Must not benull.- Returns:
- the saved instances.
-
saveAllAs
public <T> reactor.core.publisher.Flux<T> saveAllAs(Iterable<T> instances, BiPredicate<PropertyPath, Neo4jPersistentProperty> includeProperty) Description copied from interface:ReactiveNeo4jOperationsSaves 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:
saveAllAsin interfaceReactiveNeo4jOperations- Type Parameters:
T- the type of the entity.- Parameters:
instances- the instances to be saved. Must not benull.includeProperty- A predicate to determine the properties to save.- Returns:
- the saved instances.
-
saveAllAs
Description copied from interface:ReactiveNeo4jOperationsSaves several instances of an entity, including the properties and relationship defined by the projectresultType.- Specified by:
saveAllAsin interfaceReactiveNeo4jOperations- 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 benull.- Returns:
- the saved, projected instance.
-
deleteAllById
Description copied from interface:ReactiveNeo4jOperationsDeletes all entities with one of the given ids, including all entities related to that entity.- Specified by:
deleteAllByIdin interfaceReactiveNeo4jOperations- Type Parameters:
T- the type of the entity.- Parameters:
ids- the ids of the entities to be deleted. Must not benull.domainType- the type of the entity
-
deleteById
Description copied from interface:ReactiveNeo4jOperationsDeletes a single entity including all entities related to that entity.- Specified by:
deleteByIdin interfaceReactiveNeo4jOperations- Type Parameters:
T- the type of the entity.- Parameters:
id- the id of the entity to be deleted. Must not benull.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:
deleteByIdWithVersionin interfaceReactiveNeo4jOperations
-
deleteAll
Description copied from interface:ReactiveNeo4jOperationsDelete all entities of a given type.- Specified by:
deleteAllin interfaceReactiveNeo4jOperations- Parameters:
domainType- type of the entities to be deleted. Must not benull.
-
toExecutableQuery
public <T> reactor.core.publisher.Mono<ReactiveNeo4jOperations.ExecutableQuery<T>> toExecutableQuery(PreparedQuery<T> preparedQuery) Description copied from interface:ReactiveNeo4jOperationsTakes 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:
toExecutableQueryin interfaceReactiveNeo4jOperations- 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
- Specified by:
setBeanFactoryin interfaceBeanFactoryAware- Throws:
BeansException
-
setBeanClassLoader
- Specified by:
setBeanClassLoaderin interfaceBeanClassLoaderAware
-
save
Description copied from interface:ReactiveFluentSaveOperationStart creating a save operation for the given domainType.- Specified by:
savein interfaceReactiveFluentSaveOperation- Parameters:
domainType- must not be null.- Returns:
- new instance of
ReactiveFluentSaveOperation.ExecutableSave.
-