Class MutinySessionImpl
- java.lang.Object
-
- org.hibernate.reactive.mutiny.impl.MutinySessionImpl
-
- All Implemented Interfaces:
Mutiny.Closeable
,Mutiny.Session
public class MutinySessionImpl extends java.lang.Object implements Mutiny.Session
Implements theMutiny.Session
API. This delegating class is needed to avoid name clashes when implementing bothSession
andSession
.
-
-
Constructor Summary
Constructors Constructor Description MutinySessionImpl(ReactiveSession session, MutinySessionFactoryImpl factory)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description Mutiny.Session
clear()
Completely clear the session.io.smallrye.mutiny.Uni<java.lang.Void>
close()
boolean
contains(java.lang.Object entity)
Determine if the given instance belongs to this persistence context.<T> jakarta.persistence.EntityGraph<T>
createEntityGraph(java.lang.Class<T> rootType)
Create a new mutableEntityGraph
<T> jakarta.persistence.EntityGraph<T>
createEntityGraph(java.lang.Class<T> rootType, java.lang.String graphName)
Create a new mutable copy of a namedEntityGraph
Mutiny.MutationQuery
createMutationQuery(java.lang.String queryString)
Create an instance ofMutiny.MutationQuery
for the given HQL/JPQL update or delete statement.<R> Mutiny.Query<R>
createNamedQuery(java.lang.String queryName)
Create an instance ofMutiny.Query
for the named query.<R> Mutiny.SelectionQuery<R>
createNamedQuery(java.lang.String queryName, java.lang.Class<R> resultType)
Create an instance ofMutiny.SelectionQuery
for the named query.<R> Mutiny.Query<R>
createNativeQuery(java.lang.String queryString)
Create an instance ofMutiny.Query
for the given SQL query string, or SQL update, insert, or delete statement.<R> Mutiny.SelectionQuery<R>
createNativeQuery(java.lang.String queryString, java.lang.Class<R> resultType)
Create an instance ofMutiny.SelectionQuery
for the given SQL query string, using the givenresultType
to interpret the results.<R> Mutiny.SelectionQuery<R>
createNativeQuery(java.lang.String queryString, java.lang.Class<R> resultType, AffectedEntities affectedEntities)
Create an instance ofMutiny.SelectionQuery
for the given SQL query string, using the givenresultType
to interpret the results.<R> Mutiny.Query<R>
createNativeQuery(java.lang.String queryString, AffectedEntities affectedEntities)
Create an instance ofMutiny.Query
for the given SQL query string, or SQL update, insert, or delete statement.<R> Mutiny.SelectionQuery<R>
createNativeQuery(java.lang.String queryString, ResultSetMapping<R> resultSetMapping)
Create an instance ofMutiny.SelectionQuery
for the given SQL query string, using the givenResultSetMapping
to interpret the result set.<R> Mutiny.SelectionQuery<R>
createNativeQuery(java.lang.String queryString, ResultSetMapping<R> resultSetMapping, AffectedEntities affectedEntities)
Create an instance ofMutiny.SelectionQuery
for the given SQL query string, using the givenResultSetMapping
to interpret the result set.<R> Mutiny.MutationQuery
createQuery(jakarta.persistence.criteria.CriteriaDelete<R> criteriaDelete)
Create an instance ofMutiny.MutationQuery
for the given criteria delete.<R> Mutiny.SelectionQuery<R>
createQuery(jakarta.persistence.criteria.CriteriaQuery<R> criteriaQuery)
Create an instance ofMutiny.SelectionQuery
for the given criteria query.<R> Mutiny.MutationQuery
createQuery(jakarta.persistence.criteria.CriteriaUpdate<R> criteriaUpdate)
Create an instance ofMutiny.MutationQuery
for the given criteria update.<R> Mutiny.Query<R>
createQuery(java.lang.String queryString)
Deprecated.<R> Mutiny.SelectionQuery<R>
createQuery(java.lang.String queryString, java.lang.Class<R> resultType)
Create an instance ofMutiny.SelectionQuery
for the given HQL/JPQL query string and query result type.<R> Mutiny.SelectionQuery<R>
createSelectionQuery(java.lang.String queryString, java.lang.Class<R> resultType)
Create an instance ofMutiny.SelectionQuery
for the given HQL/JPQL query string.Mutiny.Transaction
currentTransaction()
Obtain the transaction currently associated with this session, if any.Mutiny.Session
detach(java.lang.Object entity)
Remove this instance from the session cache.Mutiny.Session
disableFetchProfile(java.lang.String name)
Disable a particular fetch profile on this session, or do nothing if the requested fetch profile is not enabled.void
disableFilter(java.lang.String filterName)
Disable the named filter for this session.Mutiny.Session
enableFetchProfile(java.lang.String name)
Enable a particular fetch profile on this session, or do nothing if requested fetch profile is already enabled.org.hibernate.Filter
enableFilter(java.lang.String filterName)
Enable the named filter for this session.<E,T>
io.smallrye.mutiny.Uni<T>fetch(E entity, jakarta.persistence.metamodel.Attribute<E,T> field)
Fetch a lazy property of the given entity, identified by a JPAattribute metamodel
.<T> io.smallrye.mutiny.Uni<T>
fetch(T association)
Asynchronously fetch an association that's configured for lazy loading.<T> io.smallrye.mutiny.Uni<T>
find(jakarta.persistence.EntityGraph<T> entityGraph, java.lang.Object id)
Asynchronously return the persistent instance with the given identifier of an entity class, using the givenEntityGraph
as a fetch plan.<T> io.smallrye.mutiny.Uni<T>
find(java.lang.Class<T> entityClass, java.lang.Object primaryKey)
Asynchronously return the persistent instance of the given entity class with the given identifier, ornull
if there is no such persistent instance.<T> io.smallrye.mutiny.Uni<java.util.List<T>>
find(java.lang.Class<T> entityClass, java.lang.Object... ids)
Asynchronously return the persistent instances of the given entity class with the given identifiers, or null if there is no such persistent instance.<T> io.smallrye.mutiny.Uni<T>
find(java.lang.Class<T> entityClass, java.lang.Object id, jakarta.persistence.LockModeType lockModeType)
Asynchronously return the persistent instance of the given entity class with the given identifier, requesting the givenLockModeType
.<T> io.smallrye.mutiny.Uni<T>
find(java.lang.Class<T> entityClass, java.lang.Object primaryKey, org.hibernate.LockMode lockMode)
Asynchronously return the persistent instance of the given entity class with the given identifier, requesting the givenLockMode
.<T> io.smallrye.mutiny.Uni<T>
find(java.lang.Class<T> entityClass, java.lang.Object primaryKey, org.hibernate.LockOptions lockOptions)
<T> io.smallrye.mutiny.Uni<T>
find(java.lang.Class<T> entityClass, Identifier<T> id)
Asynchronously return the persistent instance of the given entity class with the given natural identifier, or null if there is no such persistent instance.io.smallrye.mutiny.Uni<java.lang.Void>
flush()
Force this session to flush asynchronously.java.lang.Integer
getBatchSize()
The session-level batch size, ornull
if it has not been overridden.org.hibernate.CacheMode
getCacheMode()
Get the current cache mode.org.hibernate.Filter
getEnabledFilter(java.lang.String filterName)
Retrieve a currently enabled filter by name.<T> jakarta.persistence.EntityGraph<T>
getEntityGraph(java.lang.Class<T> rootType, java.lang.String graphName)
Obtain a namedEntityGraph
Mutiny.SessionFactory
getFactory()
TheMutiny.SessionFactory
which created this session.int
getFetchBatchSize()
Get the maximum batch size for batch fetching associations by id in this session.org.hibernate.FlushMode
getFlushMode()
Get the current flush mode for this session.org.hibernate.LockMode
getLockMode(java.lang.Object entity)
Determine the current lock mode of the given entity.ReactiveConnection
getReactiveConnection()
<T> T
getReference(java.lang.Class<T> entityClass, java.lang.Object id)
Return the persistent instance of the given entity class with the given identifier, assuming that the instance exists.<T> T
getReference(T entity)
Return the persistent instance with the same identity as the given instance, which might be detached, assuming that the instance is still persistent in the database.<T> ResultSetMapping<T>
getResultSetMapping(java.lang.Class<T> resultType, java.lang.String mappingName)
Obtain a native SQL result set mapping defined via the annotationSqlResultSetMapping
.boolean
isDefaultReadOnly()
boolean
isFetchProfileEnabled(java.lang.String name)
Determine if the fetch profile with the given name is enabled for this session.boolean
isOpen()
boolean
isReadOnly(java.lang.Object entityOrProxy)
Is the specified entity or proxy read-only?boolean
isSubselectFetchingEnabled()
Determine if subselect fetching is enabled in this session.io.smallrye.mutiny.Uni<java.lang.Void>
lock(java.lang.Object entity, jakarta.persistence.LockModeType lockModeType)
Obtain the specified lock level upon the given object.io.smallrye.mutiny.Uni<java.lang.Void>
lock(java.lang.Object entity, org.hibernate.LockMode lockMode)
Obtain the specified lock level upon the given object.io.smallrye.mutiny.Uni<java.lang.Void>
lock(java.lang.Object entity, org.hibernate.LockOptions lockOptions)
<T> io.smallrye.mutiny.Uni<T>
merge(T entity)
Copy the state of the given object onto the persistent instance with the same identifier.io.smallrye.mutiny.Uni<java.lang.Void>
mergeAll(java.lang.Object... entity)
Merge multiple entity instances at once.io.smallrye.mutiny.Uni<java.lang.Void>
persist(java.lang.Object entity)
Asynchronously persist the given transient instance, first assigning a generated identifier.io.smallrye.mutiny.Uni<java.lang.Void>
persistAll(java.lang.Object... entity)
Persist multiple transient entity instances at once.io.smallrye.mutiny.Uni<java.lang.Void>
refresh(java.lang.Object entity)
Re-read the state of the given instance from the underlying database.io.smallrye.mutiny.Uni<java.lang.Void>
refresh(java.lang.Object entity, jakarta.persistence.LockModeType lockModeType)
Re-read the state of the given instance from the underlying database, requesting the givenLockModeType
.io.smallrye.mutiny.Uni<java.lang.Void>
refresh(java.lang.Object entity, org.hibernate.LockMode lockMode)
Re-read the state of the given instance from the underlying database, requesting the givenLockMode
.io.smallrye.mutiny.Uni<java.lang.Void>
refresh(java.lang.Object entity, org.hibernate.LockOptions lockOptions)
io.smallrye.mutiny.Uni<java.lang.Void>
refreshAll(java.lang.Object... entity)
Refresh multiple entity instances at once.io.smallrye.mutiny.Uni<java.lang.Void>
remove(java.lang.Object entity)
Asynchronously remove a persistent instance from the datastore.io.smallrye.mutiny.Uni<java.lang.Void>
removeAll(java.lang.Object... entity)
Remove multiple entity instances at once.Mutiny.Session
setBatchSize(java.lang.Integer batchSize)
Set the session-level batch size, overriding the batch size set by the configuration propertyhibernate.jdbc.batch_size
.Mutiny.Session
setCacheMode(org.hibernate.CacheMode cacheMode)
Set thecache mode
for this session.Mutiny.Session
setCacheRetrieveMode(jakarta.persistence.CacheRetrieveMode cacheRetrieveMode)
Set theCacheRetrieveMode
for this session.Mutiny.Session
setCacheStoreMode(jakarta.persistence.CacheStoreMode cacheStoreMode)
Set theCacheStoreMode
for this session.Mutiny.Session
setDefaultReadOnly(boolean readOnly)
Change the default for entities and proxies loaded into this session from modifiable to read-only mode, or from modifiable to read-only mode.Mutiny.Session
setFetchBatchSize(int batchSize)
Set the maximum batch size for batch fetching associations by id in this session.Mutiny.Session
setFlushMode(jakarta.persistence.FlushModeType flushModeType)
Set theflush mode
for this session.Mutiny.Session
setFlushMode(org.hibernate.FlushMode flushMode)
Set theflush mode
for this session.Mutiny.Session
setReadOnly(java.lang.Object entityOrProxy, boolean readOnly)
Set an unmodified persistent object to read-only mode, or a read-only object to modifiable mode.Mutiny.Session
setSubselectFetchingEnabled(boolean enabled)
Enable or disable subselect fetching in this session.<T> io.smallrye.mutiny.Uni<T>
unproxy(T association)
Asynchronously fetch an association that's configured for lazy loading, and unwrap the underlying entity implementation from any proxy.<T> T
unwrap(java.lang.Class<T> clazz)
<T> io.smallrye.mutiny.Uni<T>
withTransaction(java.util.function.Function<Mutiny.Transaction,io.smallrye.mutiny.Uni<T>> work)
Performs the given work within the scope of a database transaction, automatically flushing the session.
-
-
-
Constructor Detail
-
MutinySessionImpl
public MutinySessionImpl(ReactiveSession session, MutinySessionFactoryImpl factory)
-
-
Method Detail
-
flush
public io.smallrye.mutiny.Uni<java.lang.Void> flush()
Description copied from interface:Mutiny.Session
Force this session to flush asynchronously. Must be called at the end of a unit of work, before committing the transaction and closing the session. Flushing is the process of synchronizing the underlying persistent store with state held in memory.session.flush().thenAccept(v -> print("done saving changes"));
- Specified by:
flush
in interfaceMutiny.Session
- See Also:
EntityManager.flush()
-
fetch
public <T> io.smallrye.mutiny.Uni<T> fetch(T association)
Description copied from interface:Mutiny.Session
Asynchronously fetch an association that's configured for lazy loading.session.fetch(author.getBook()).thenAccept(book -> print(book.getTitle()));
- Specified by:
fetch
in interfaceMutiny.Session
- Parameters:
association
- a lazy-loaded association- Returns:
- the fetched association, via a
Uni
- See Also:
Mutiny.fetch(Object)
,Hibernate.initialize(Object)
-
fetch
public <E,T> io.smallrye.mutiny.Uni<T> fetch(E entity, jakarta.persistence.metamodel.Attribute<E,T> field)
Description copied from interface:Mutiny.Session
Fetch a lazy property of the given entity, identified by a JPAattribute metamodel
. Note that this feature is only supported in conjunction with the Hibernate bytecode enhancer.session.fetch(book, Book_.isbn).thenAccept(isbn -> print(isbn))
- Specified by:
fetch
in interfaceMutiny.Session
-
unproxy
public <T> io.smallrye.mutiny.Uni<T> unproxy(T association)
Description copied from interface:Mutiny.Session
Asynchronously fetch an association that's configured for lazy loading, and unwrap the underlying entity implementation from any proxy.session.unproxy(author.getBook()).thenAccept(book -> print(book.getTitle()));
- Specified by:
unproxy
in interfaceMutiny.Session
- Parameters:
association
- a lazy-loaded association- Returns:
- the fetched association, via a
Uni
- See Also:
Hibernate.unproxy(Object)
-
getReference
public <T> T getReference(java.lang.Class<T> entityClass, java.lang.Object id)
Description copied from interface:Mutiny.Session
Return the persistent instance of the given entity class with the given identifier, assuming that the instance exists. This method never results in access to the underlying data store, and thus might return a proxied instance that must be initialized explicitly usingMutiny.Session.fetch(Object)
.You should not use this method to determine if an instance exists (use
Mutiny.Session.find(java.lang.Class<T>, java.lang.Object)
instead). Use this only to retrieve an instance which you safely assume exists, where non-existence would be an actual error.- Specified by:
getReference
in interfaceMutiny.Session
- Parameters:
entityClass
- a persistent classid
- a valid identifier of an existing persistent instance of the class- Returns:
- the persistent instance or proxy
- See Also:
EntityManager.getReference(Class, Object)
-
getReactiveConnection
public ReactiveConnection getReactiveConnection()
-
getReference
public <T> T getReference(T entity)
Description copied from interface:Mutiny.Session
Return the persistent instance with the same identity as the given instance, which might be detached, assuming that the instance is still persistent in the database. This method never results in access to the underlying data store, and thus might return a proxy that must be initialized explicitly usingMutiny.Session.fetch(Object)
.- Specified by:
getReference
in interfaceMutiny.Session
- Parameters:
entity
- a detached persistent instance- Returns:
- the persistent instance or proxy
-
getLockMode
public org.hibernate.LockMode getLockMode(java.lang.Object entity)
Description copied from interface:Mutiny.Session
Determine the current lock mode of the given entity.- Specified by:
getLockMode
in interfaceMutiny.Session
-
contains
public boolean contains(java.lang.Object entity)
Description copied from interface:Mutiny.Session
Determine if the given instance belongs to this persistence context.- Specified by:
contains
in interfaceMutiny.Session
-
createSelectionQuery
public <R> Mutiny.SelectionQuery<R> createSelectionQuery(java.lang.String queryString, java.lang.Class<R> resultType)
Description copied from interface:Mutiny.Session
Create an instance ofMutiny.SelectionQuery
for the given HQL/JPQL query string.- Specified by:
createSelectionQuery
in interfaceMutiny.Session
- Parameters:
queryString
- The HQL/JPQL query- Returns:
- The
Mutiny.SelectionQuery
instance for manipulation and execution - See Also:
EntityManager.createQuery(String, Class)
-
createMutationQuery
public Mutiny.MutationQuery createMutationQuery(java.lang.String queryString)
Description copied from interface:Mutiny.Session
Create an instance ofMutiny.MutationQuery
for the given HQL/JPQL update or delete statement.- Specified by:
createMutationQuery
in interfaceMutiny.Session
- Parameters:
queryString
- The HQL/JPQL query, update or delete statement- Returns:
- The
Mutiny.MutationQuery
instance for manipulation and execution - See Also:
EntityManager.createQuery(String)
-
createQuery
@Deprecated public <R> Mutiny.Query<R> createQuery(java.lang.String queryString)
Deprecated.Description copied from interface:Mutiny.Session
Create an instance ofMutiny.Query
for the given HQL/JPQL query string or HQL/JPQL update or delete statement. In the case of an update or delete, the returnedMutiny.Query
must be executed usingMutiny.MutationQuery.executeUpdate()
which returns an affected row count.- Specified by:
createQuery
in interfaceMutiny.Session
- Parameters:
queryString
- The HQL/JPQL query, update or delete statement- Returns:
- The
Mutiny.Query
instance for manipulation and execution - See Also:
EntityManager.createQuery(String)
-
createQuery
public <R> Mutiny.SelectionQuery<R> createQuery(java.lang.String queryString, java.lang.Class<R> resultType)
Description copied from interface:Mutiny.Session
Create an instance ofMutiny.SelectionQuery
for the given HQL/JPQL query string and query result type.- Specified by:
createQuery
in interfaceMutiny.Session
- Parameters:
queryString
- The HQL/JPQL queryresultType
- the Java type returned in each row of query results- Returns:
- The
Mutiny.SelectionQuery
instance for manipulation and execution - See Also:
EntityManager.createQuery(String, Class)
-
createQuery
public <R> Mutiny.SelectionQuery<R> createQuery(jakarta.persistence.criteria.CriteriaQuery<R> criteriaQuery)
Description copied from interface:Mutiny.Session
Create an instance ofMutiny.SelectionQuery
for the given criteria query.- Specified by:
createQuery
in interfaceMutiny.Session
- Parameters:
criteriaQuery
- TheCriteriaQuery
- Returns:
- The
Mutiny.SelectionQuery
instance for manipulation and execution - See Also:
EntityManager.createQuery(String)
-
createQuery
public <R> Mutiny.MutationQuery createQuery(jakarta.persistence.criteria.CriteriaUpdate<R> criteriaUpdate)
Description copied from interface:Mutiny.Session
Create an instance ofMutiny.MutationQuery
for the given criteria update.- Specified by:
createQuery
in interfaceMutiny.Session
- Parameters:
criteriaUpdate
- TheCriteriaUpdate
- Returns:
- The
Mutiny.MutationQuery
instance for manipulation and execution
-
createQuery
public <R> Mutiny.MutationQuery createQuery(jakarta.persistence.criteria.CriteriaDelete<R> criteriaDelete)
Description copied from interface:Mutiny.Session
Create an instance ofMutiny.MutationQuery
for the given criteria delete.- Specified by:
createQuery
in interfaceMutiny.Session
- Parameters:
criteriaDelete
- TheCriteriaDelete
- Returns:
- The
Mutiny.MutationQuery
instance for manipulation and execution
-
createNamedQuery
public <R> Mutiny.Query<R> createNamedQuery(java.lang.String queryName)
Description copied from interface:Mutiny.Session
Create an instance ofMutiny.Query
for the named query.- Specified by:
createNamedQuery
in interfaceMutiny.Session
- Parameters:
queryName
- The name of the query- Returns:
- The
Mutiny.Query
instance for manipulation and execution - See Also:
EntityManager.createQuery(String)
-
createNamedQuery
public <R> Mutiny.SelectionQuery<R> createNamedQuery(java.lang.String queryName, java.lang.Class<R> resultType)
Description copied from interface:Mutiny.Session
Create an instance ofMutiny.SelectionQuery
for the named query.- Specified by:
createNamedQuery
in interfaceMutiny.Session
- Parameters:
queryName
- The name of the queryresultType
- the Java type returned in each row of query results- Returns:
- The
Mutiny.SelectionQuery
instance for manipulation and execution - See Also:
EntityManager.createQuery(String, Class)
-
createNativeQuery
public <R> Mutiny.Query<R> createNativeQuery(java.lang.String queryString)
Description copied from interface:Mutiny.Session
Create an instance ofMutiny.Query
for the given SQL query string, or SQL update, insert, or delete statement. In the case of an update, insert, or delete, the returnedMutiny.Query
must be executed usingMutiny.MutationQuery.executeUpdate()
which returns an affected row count. In the case of a query:- If the result set has a single column, the results will be returned as scalars.
- Otherwise, if the result set has multiple columns, the results will
be returned as elements of arrays of type
Object[]
.
- Specified by:
createNativeQuery
in interfaceMutiny.Session
- Parameters:
queryString
- The SQL select, update, insert, or delete statement
-
createNativeQuery
public <R> Mutiny.Query<R> createNativeQuery(java.lang.String queryString, AffectedEntities affectedEntities)
Description copied from interface:Mutiny.Session
Create an instance ofMutiny.Query
for the given SQL query string, or SQL update, insert, or delete statement. In the case of an update, insert, or delete, the returnedMutiny.Query
must be executed usingMutiny.MutationQuery.executeUpdate()
which returns an affected row count. In the case of a query:- If the result set has a single column, the results will be returned as scalars.
- Otherwise, if the result set has multiple columns, the results will
be returned as elements of arrays of type
Object[]
.
Any
affected entities
are synchronized with the database before execution of the statement.- Specified by:
createNativeQuery
in interfaceMutiny.Session
- Parameters:
queryString
- The SQL select, update, insert, or delete statementaffectedEntities
- The entities which are affected by the statement
-
createNativeQuery
public <R> Mutiny.SelectionQuery<R> createNativeQuery(java.lang.String queryString, java.lang.Class<R> resultType)
Description copied from interface:Mutiny.Session
Create an instance ofMutiny.SelectionQuery
for the given SQL query string, using the givenresultType
to interpret the results.- If the given result type is
Object
, or a built-in type such asString
orInteger
, the result set must have a single column, which will be returned as a scalar. - If the given result type is
Object[]
, then the result set must have multiple columns, which will be returned in arrays. - Otherwise, the given result type must be an entity class, in which case the result set column aliases must map to the fields of the entity, and the query will return instances of the entity.
- Specified by:
createNativeQuery
in interfaceMutiny.Session
- Parameters:
queryString
- The SQL queryresultType
- the Java type returned in each row of query results- Returns:
- The
Mutiny.SelectionQuery
instance for manipulation and execution - See Also:
EntityManager.createNativeQuery(String, Class)
- If the given result type is
-
createNativeQuery
public <R> Mutiny.SelectionQuery<R> createNativeQuery(java.lang.String queryString, java.lang.Class<R> resultType, AffectedEntities affectedEntities)
Description copied from interface:Mutiny.Session
Create an instance ofMutiny.SelectionQuery
for the given SQL query string, using the givenresultType
to interpret the results.- If the given result type is
Object
, or a built-in type such asString
orInteger
, the result set must have a single column, which will be returned as a scalar. - If the given result type is
Object[]
, then the result set must have multiple columns, which will be returned in arrays. - Otherwise, the given result type must be an entity class, in which case the result set column aliases must map to the fields of the entity, and the query will return instances of the entity.
Any
affected entities
are synchronized with the database before execution of the query.- Specified by:
createNativeQuery
in interfaceMutiny.Session
- Parameters:
queryString
- The SQL queryresultType
- the Java type returned in each row of query resultsaffectedEntities
- The entities which are affected by the query- Returns:
- The
Mutiny.Query
instance for manipulation and execution - See Also:
EntityManager.createNativeQuery(String, Class)
- If the given result type is
-
createNativeQuery
public <R> Mutiny.SelectionQuery<R> createNativeQuery(java.lang.String queryString, ResultSetMapping<R> resultSetMapping)
Description copied from interface:Mutiny.Session
Create an instance ofMutiny.SelectionQuery
for the given SQL query string, using the givenResultSetMapping
to interpret the result set.- Specified by:
createNativeQuery
in interfaceMutiny.Session
- Parameters:
queryString
- The SQL queryresultSetMapping
- the result set mapping- Returns:
- The
Mutiny.Query
instance for manipulation and execution - See Also:
Mutiny.Session.getResultSetMapping(Class, String)
,EntityManager.createNativeQuery(String, String)
-
createNativeQuery
public <R> Mutiny.SelectionQuery<R> createNativeQuery(java.lang.String queryString, ResultSetMapping<R> resultSetMapping, AffectedEntities affectedEntities)
Description copied from interface:Mutiny.Session
Create an instance ofMutiny.SelectionQuery
for the given SQL query string, using the givenResultSetMapping
to interpret the result set.Any
affected entities
are synchronized with the database before execution of the query.- Specified by:
createNativeQuery
in interfaceMutiny.Session
- Parameters:
queryString
- The SQL queryresultSetMapping
- the result set mappingaffectedEntities
- The entities which are affected by the query- Returns:
- The
Mutiny.SelectionQuery
instance for manipulation and execution - See Also:
Mutiny.Session.getResultSetMapping(Class, String)
,EntityManager.createNativeQuery(String, String)
-
find
public <T> io.smallrye.mutiny.Uni<T> find(java.lang.Class<T> entityClass, java.lang.Object primaryKey)
Description copied from interface:Mutiny.Session
Asynchronously return the persistent instance of the given entity class with the given identifier, ornull
if there is no such persistent instance. If the instance is already associated with the session, return the associated instance. This method never returns an uninitialized instance.session.find(Book.class, id).map(book -> print(book.getTitle()));
- Specified by:
find
in interfaceMutiny.Session
- Parameters:
entityClass
- The entity typeprimaryKey
- an identifier- Returns:
- a persistent instance or null via a
Uni
- See Also:
EntityManager.find(Class, Object)
-
find
public <T> io.smallrye.mutiny.Uni<java.util.List<T>> find(java.lang.Class<T> entityClass, java.lang.Object... ids)
Description copied from interface:Mutiny.Session
Asynchronously return the persistent instances of the given entity class with the given identifiers, or null if there is no such persistent instance.- Specified by:
find
in interfaceMutiny.Session
- Parameters:
entityClass
- The entity typeids
- the identifiers- Returns:
- a list of persistent instances and nulls via a
Uni
-
find
public <T> io.smallrye.mutiny.Uni<T> find(java.lang.Class<T> entityClass, Identifier<T> id)
Description copied from interface:Mutiny.Session
Asynchronously return the persistent instance of the given entity class with the given natural identifier, or null if there is no such persistent instance.- Specified by:
find
in interfaceMutiny.Session
- Parameters:
entityClass
- The entity typeid
- the natural identifier- Returns:
- a persistent instance or null via a
Uni
-
find
public <T> io.smallrye.mutiny.Uni<T> find(java.lang.Class<T> entityClass, java.lang.Object primaryKey, org.hibernate.LockMode lockMode)
Description copied from interface:Mutiny.Session
Asynchronously return the persistent instance of the given entity class with the given identifier, requesting the givenLockMode
.- Specified by:
find
in interfaceMutiny.Session
- Parameters:
entityClass
- The entity typeprimaryKey
- an identifierlockMode
- the requestedLockMode
- Returns:
- a persistent instance or null via a
Uni
- See Also:
Mutiny.Session.find(Class, Object)
,this discussion of lock modes
-
find
public <T> io.smallrye.mutiny.Uni<T> find(java.lang.Class<T> entityClass, java.lang.Object id, jakarta.persistence.LockModeType lockModeType)
Description copied from interface:Mutiny.Session
Asynchronously return the persistent instance of the given entity class with the given identifier, requesting the givenLockModeType
.- Specified by:
find
in interfaceMutiny.Session
- Parameters:
entityClass
- The entity typeid
- an identifierlockModeType
- the requestedLockModeType
- Returns:
- a persistent instance or null via a
Uni
- See Also:
Mutiny.Session.find(Class, Object)
,this discussion of lock modes
-
find
public <T> io.smallrye.mutiny.Uni<T> find(java.lang.Class<T> entityClass, java.lang.Object primaryKey, org.hibernate.LockOptions lockOptions)
-
find
public <T> io.smallrye.mutiny.Uni<T> find(jakarta.persistence.EntityGraph<T> entityGraph, java.lang.Object id)
Description copied from interface:Mutiny.Session
Asynchronously return the persistent instance with the given identifier of an entity class, using the givenEntityGraph
as a fetch plan.- Specified by:
find
in interfaceMutiny.Session
- Parameters:
entityGraph
- anEntityGraph
specifying the entity and associations to be fetchedid
- an identifier- See Also:
Mutiny.Session.find(Class, Object)
-
persist
public io.smallrye.mutiny.Uni<java.lang.Void> persist(java.lang.Object entity)
Description copied from interface:Mutiny.Session
Asynchronously persist the given transient instance, first assigning a generated identifier. (Or using the current value of the identifier property if the entity has assigned identifiers.)This operation cascades to associated instances if the association is mapped with
CascadeType.PERSIST
.session.persist(newBook).map(v -> session.flush());
- Specified by:
persist
in interfaceMutiny.Session
- Parameters:
entity
- a transient instance of a persistent class- See Also:
EntityManager.persist(Object)
-
persistAll
public io.smallrye.mutiny.Uni<java.lang.Void> persistAll(java.lang.Object... entity)
Description copied from interface:Mutiny.Session
Persist multiple transient entity instances at once.- Specified by:
persistAll
in interfaceMutiny.Session
- See Also:
Mutiny.Session.persist(Object)
-
remove
public io.smallrye.mutiny.Uni<java.lang.Void> remove(java.lang.Object entity)
Description copied from interface:Mutiny.Session
Asynchronously remove a persistent instance from the datastore. The argument may be an instance associated with the receiving session or a transient instance with an identifier associated with existing persistent state.This operation cascades to associated instances if the association is mapped with
CascadeType.REMOVE
.session.delete(book).thenAccept(v -> session.flush());
- Specified by:
remove
in interfaceMutiny.Session
- Parameters:
entity
- the managed persistent instance to be removed- See Also:
EntityManager.remove(Object)
-
removeAll
public io.smallrye.mutiny.Uni<java.lang.Void> removeAll(java.lang.Object... entity)
Description copied from interface:Mutiny.Session
Remove multiple entity instances at once.- Specified by:
removeAll
in interfaceMutiny.Session
- See Also:
Mutiny.Session.remove(Object)
-
merge
public <T> io.smallrye.mutiny.Uni<T> merge(T entity)
Description copied from interface:Mutiny.Session
Copy the state of the given object onto the persistent instance with the same identifier. If there is no such persistent instance currently associated with the session, it will be loaded. Return the persistent instance. Or, if the given instance is transient, save a copy of it and return the copy as a newly persistent instance. The given instance does not become associated with the session.This operation cascades to associated instances if the association is mapped with
CascadeType.MERGE
.- Specified by:
merge
in interfaceMutiny.Session
- Parameters:
entity
- a detached instance with state to be copied- Returns:
- an updated persistent instance
- See Also:
EntityManager.merge(Object)
-
mergeAll
public final io.smallrye.mutiny.Uni<java.lang.Void> mergeAll(java.lang.Object... entity)
Description copied from interface:Mutiny.Session
Merge multiple entity instances at once.- Specified by:
mergeAll
in interfaceMutiny.Session
- See Also:
Mutiny.Session.merge(Object)
-
refresh
public io.smallrye.mutiny.Uni<java.lang.Void> refresh(java.lang.Object entity)
Description copied from interface:Mutiny.Session
Re-read the state of the given instance from the underlying database. It is inadvisable to use this to implement long-running sessions that span many business tasks. This method is, however, useful in certain special circumstances, for example:- where a database trigger alters the object state after insert or update, or
- after executing direct native SQL in the same session.
- Specified by:
refresh
in interfaceMutiny.Session
- Parameters:
entity
- a managed persistent instance- See Also:
EntityManager.refresh(Object)
-
refresh
public io.smallrye.mutiny.Uni<java.lang.Void> refresh(java.lang.Object entity, org.hibernate.LockMode lockMode)
Description copied from interface:Mutiny.Session
Re-read the state of the given instance from the underlying database, requesting the givenLockMode
.- Specified by:
refresh
in interfaceMutiny.Session
- Parameters:
entity
- a managed persistent entity instancelockMode
- the requested lock mode- See Also:
Mutiny.Session.refresh(Object)
-
refresh
public io.smallrye.mutiny.Uni<java.lang.Void> refresh(java.lang.Object entity, jakarta.persistence.LockModeType lockModeType)
Description copied from interface:Mutiny.Session
Re-read the state of the given instance from the underlying database, requesting the givenLockModeType
.- Specified by:
refresh
in interfaceMutiny.Session
- Parameters:
entity
- a managed persistent entity instancelockModeType
- the requested lock mode- See Also:
Mutiny.Session.refresh(Object)
-
refresh
public io.smallrye.mutiny.Uni<java.lang.Void> refresh(java.lang.Object entity, org.hibernate.LockOptions lockOptions)
-
refreshAll
public io.smallrye.mutiny.Uni<java.lang.Void> refreshAll(java.lang.Object... entity)
Description copied from interface:Mutiny.Session
Refresh multiple entity instances at once.- Specified by:
refreshAll
in interfaceMutiny.Session
- See Also:
Mutiny.Session.refresh(Object)
-
lock
public io.smallrye.mutiny.Uni<java.lang.Void> lock(java.lang.Object entity, org.hibernate.LockMode lockMode)
Description copied from interface:Mutiny.Session
Obtain the specified lock level upon the given object. For example, this operation may be used to:- perform a version check with
LockMode.PESSIMISTIC_READ
, - upgrade to a pessimistic lock with
LockMode.PESSIMISTIC_WRITE
, - force a version increment with
LockMode.PESSIMISTIC_FORCE_INCREMENT
, - schedule a version check just before the end of the transaction with
LockMode.OPTIMISTIC
, or - schedule a version increment just before the end of the transaction
with
LockMode.OPTIMISTIC_FORCE_INCREMENT
.
This operation cascades to associated instances if the association is mapped with
CascadeType.LOCK
.- Specified by:
lock
in interfaceMutiny.Session
- Parameters:
entity
- a managed persistent instancelockMode
- the lock level
- perform a version check with
-
lock
public io.smallrye.mutiny.Uni<java.lang.Void> lock(java.lang.Object entity, jakarta.persistence.LockModeType lockModeType)
Description copied from interface:Mutiny.Session
Obtain the specified lock level upon the given object. For example, this operation may be used to:- perform a version check with
LockModeType.PESSIMISTIC_READ
, - upgrade to a pessimistic lock with
LockModeType.PESSIMISTIC_WRITE
, - force a version increment with
LockModeType.PESSIMISTIC_FORCE_INCREMENT
, - schedule a version check just before the end of the transaction with
LockModeType.OPTIMISTIC
, or - schedule a version increment just before the end of the transaction
with
LockModeType.OPTIMISTIC_FORCE_INCREMENT
.
This operation cascades to associated instances if the association is mapped with
CascadeType.LOCK
.- Specified by:
lock
in interfaceMutiny.Session
- Parameters:
entity
- a managed persistent instancelockModeType
- the lock level
- perform a version check with
-
lock
public io.smallrye.mutiny.Uni<java.lang.Void> lock(java.lang.Object entity, org.hibernate.LockOptions lockOptions)
-
getFlushMode
public org.hibernate.FlushMode getFlushMode()
Description copied from interface:Mutiny.Session
Get the current flush mode for this session.- Specified by:
getFlushMode
in interfaceMutiny.Session
- Returns:
- the flush mode
-
setFlushMode
public Mutiny.Session setFlushMode(org.hibernate.FlushMode flushMode)
Description copied from interface:Mutiny.Session
Set theflush mode
for this session.The flush mode determines the points at which the session is flushed. Flushing is the process of synchronizing the underlying persistent store with persistable state held in memory.
For a logically "read only" session, it is reasonable to set the session's flush mode to
FlushMode.MANUAL
at the start of the session (in order to achieve some extra performance).- Specified by:
setFlushMode
in interfaceMutiny.Session
- Parameters:
flushMode
- the new flush mode
-
setFlushMode
public Mutiny.Session setFlushMode(jakarta.persistence.FlushModeType flushModeType)
Description copied from interface:Mutiny.Session
Set theflush mode
for this session.The flush mode determines the points at which the session is flushed. Flushing is the process of synchronizing the underlying persistent store with persistable state held in memory.
- Specified by:
setFlushMode
in interfaceMutiny.Session
- Parameters:
flushModeType
- the new flush mode
-
setDefaultReadOnly
public Mutiny.Session setDefaultReadOnly(boolean readOnly)
Description copied from interface:Mutiny.Session
Change the default for entities and proxies loaded into this session from modifiable to read-only mode, or from modifiable to read-only mode.Read-only entities are not dirty-checked and snapshots of persistent state are not maintained. Read-only entities can be modified, but changes are not persisted.
- Specified by:
setDefaultReadOnly
in interfaceMutiny.Session
- See Also:
Session.setDefaultReadOnly(boolean)
-
isDefaultReadOnly
public boolean isDefaultReadOnly()
- Specified by:
isDefaultReadOnly
in interfaceMutiny.Session
- Returns:
- the default read-only mode for entities and proxies loaded in this session
-
setReadOnly
public Mutiny.Session setReadOnly(java.lang.Object entityOrProxy, boolean readOnly)
Description copied from interface:Mutiny.Session
Set an unmodified persistent object to read-only mode, or a read-only object to modifiable mode. In read-only mode, no snapshot is maintained, the instance is never dirty checked, and changes are not persisted.- Specified by:
setReadOnly
in interfaceMutiny.Session
- See Also:
Session.setReadOnly(Object, boolean)
-
isReadOnly
public boolean isReadOnly(java.lang.Object entityOrProxy)
Description copied from interface:Mutiny.Session
Is the specified entity or proxy read-only?- Specified by:
isReadOnly
in interfaceMutiny.Session
- See Also:
Session.isReadOnly(Object)
-
getCacheMode
public org.hibernate.CacheMode getCacheMode()
Description copied from interface:Mutiny.Session
Get the current cache mode.- Specified by:
getCacheMode
in interfaceMutiny.Session
- Returns:
- The current cache mode.
-
setCacheMode
public Mutiny.Session setCacheMode(org.hibernate.CacheMode cacheMode)
Description copied from interface:Mutiny.Session
Set thecache mode
for this session.The cache mode determines the manner in which this session interacts with the second level cache.
- Specified by:
setCacheMode
in interfaceMutiny.Session
- Parameters:
cacheMode
- The new cache mode.
-
setCacheStoreMode
public Mutiny.Session setCacheStoreMode(jakarta.persistence.CacheStoreMode cacheStoreMode)
Description copied from interface:Mutiny.Session
Set theCacheStoreMode
for this session.- Specified by:
setCacheStoreMode
in interfaceMutiny.Session
- Parameters:
cacheStoreMode
- The new cache store mode.
-
setCacheRetrieveMode
public Mutiny.Session setCacheRetrieveMode(jakarta.persistence.CacheRetrieveMode cacheRetrieveMode)
Description copied from interface:Mutiny.Session
Set theCacheRetrieveMode
for this session.- Specified by:
setCacheRetrieveMode
in interfaceMutiny.Session
- Parameters:
cacheRetrieveMode
- The new cache retrieve mode.
-
setBatchSize
public Mutiny.Session setBatchSize(java.lang.Integer batchSize)
Description copied from interface:Mutiny.Session
Set the session-level batch size, overriding the batch size set by the configuration propertyhibernate.jdbc.batch_size
.- Specified by:
setBatchSize
in interfaceMutiny.Session
-
getBatchSize
public java.lang.Integer getBatchSize()
Description copied from interface:Mutiny.Session
The session-level batch size, ornull
if it has not been overridden.- Specified by:
getBatchSize
in interfaceMutiny.Session
-
detach
public Mutiny.Session detach(java.lang.Object entity)
Description copied from interface:Mutiny.Session
Remove this instance from the session cache. Changes to the instance will not be synchronized with the database.This operation cascades to associated instances if the association is mapped with
CascadeType.DETACH
.- Specified by:
detach
in interfaceMutiny.Session
- Parameters:
entity
- The entity to evict- See Also:
EntityManager.detach(Object)
-
clear
public Mutiny.Session clear()
Description copied from interface:Mutiny.Session
Completely clear the session. Detach all persistent instances and cancel all pending insertions, updates and deletions.- Specified by:
clear
in interfaceMutiny.Session
- See Also:
EntityManager.clear()
-
enableFetchProfile
public Mutiny.Session enableFetchProfile(java.lang.String name)
Description copied from interface:Mutiny.Session
Enable a particular fetch profile on this session, or do nothing if requested fetch profile is already enabled.- Specified by:
enableFetchProfile
in interfaceMutiny.Session
- Parameters:
name
- The name of the fetch profile to be enabled.- See Also:
for discussion of this feature
-
disableFetchProfile
public Mutiny.Session disableFetchProfile(java.lang.String name)
Description copied from interface:Mutiny.Session
Disable a particular fetch profile on this session, or do nothing if the requested fetch profile is not enabled.- Specified by:
disableFetchProfile
in interfaceMutiny.Session
- Parameters:
name
- The name of the fetch profile to be disabled.- See Also:
for discussion of this feature
-
isFetchProfileEnabled
public boolean isFetchProfileEnabled(java.lang.String name)
Description copied from interface:Mutiny.Session
Determine if the fetch profile with the given name is enabled for this session.- Specified by:
isFetchProfileEnabled
in interfaceMutiny.Session
- Parameters:
name
- The name of the profile to be checked.- Returns:
- True if fetch profile is enabled; false if not.
- See Also:
for discussion of this feature
-
enableFilter
public org.hibernate.Filter enableFilter(java.lang.String filterName)
Description copied from interface:Mutiny.Session
Enable the named filter for this session.- Specified by:
enableFilter
in interfaceMutiny.Session
- Parameters:
filterName
- The name of the filter to be enabled.- Returns:
- The Filter instance representing the enabled filter.
-
disableFilter
public void disableFilter(java.lang.String filterName)
Description copied from interface:Mutiny.Session
Disable the named filter for this session.- Specified by:
disableFilter
in interfaceMutiny.Session
- Parameters:
filterName
- The name of the filter to be disabled.
-
getEnabledFilter
public org.hibernate.Filter getEnabledFilter(java.lang.String filterName)
Description copied from interface:Mutiny.Session
Retrieve a currently enabled filter by name.- Specified by:
getEnabledFilter
in interfaceMutiny.Session
- Parameters:
filterName
- The name of the filter to be retrieved.- Returns:
- The Filter instance representing the enabled filter.
-
getFetchBatchSize
public int getFetchBatchSize()
Description copied from interface:Mutiny.Session
Get the maximum batch size for batch fetching associations by id in this session.- Specified by:
getFetchBatchSize
in interfaceMutiny.Session
-
setFetchBatchSize
public Mutiny.Session setFetchBatchSize(int batchSize)
Description copied from interface:Mutiny.Session
Set the maximum batch size for batch fetching associations by id in this session. Override the default controlled by the configuration propertyhibernate.default_batch_fetch_size
.- If
batchSize>1
, then batch fetching is enabled. - If
batchSize<0
, the batch size is inherited from the factory-level setting. - Otherwise, batch fetching is disabled.
- Specified by:
setFetchBatchSize
in interfaceMutiny.Session
- Parameters:
batchSize
- the maximum batch size for batch fetching
- If
-
isSubselectFetchingEnabled
public boolean isSubselectFetchingEnabled()
Description copied from interface:Mutiny.Session
Determine if subselect fetching is enabled in this session.- Specified by:
isSubselectFetchingEnabled
in interfaceMutiny.Session
- Returns:
true
if subselect fetching is enabled
-
setSubselectFetchingEnabled
public Mutiny.Session setSubselectFetchingEnabled(boolean enabled)
Description copied from interface:Mutiny.Session
Enable or disable subselect fetching in this session. Override the default controlled by the configuration propertyhibernate.use_subselect_fetch
.- Specified by:
setSubselectFetchingEnabled
in interfaceMutiny.Session
- Parameters:
enabled
-true
to enable subselect fetching
-
withTransaction
public <T> io.smallrye.mutiny.Uni<T> withTransaction(java.util.function.Function<Mutiny.Transaction,io.smallrye.mutiny.Uni<T>> work)
Description copied from interface:Mutiny.Session
Performs the given work within the scope of a database transaction, automatically flushing the session. The transaction will be rolled back if the work completes with an uncaught exception, or ifMutiny.Transaction.markForRollback()
is called.The resulting
Mutiny.Transaction
object may also be obtained viaMutiny.Session.currentTransaction()
.- If there is already a transaction associated with this session, the work is executed in the context of the existing transaction, and no new transaction is initiated.
- If there is no transaction associated with this session, a new transaction is started, and the work is executed in the context of the new transaction.
- Specified by:
withTransaction
in interfaceMutiny.Session
- Parameters:
work
- a function which acceptsMutiny.Transaction
and returns the result of the work as aUni
.- See Also:
Mutiny.SessionFactory.withTransaction(BiFunction)
-
currentTransaction
public Mutiny.Transaction currentTransaction()
Description copied from interface:Mutiny.Session
Obtain the transaction currently associated with this session, if any.- Specified by:
currentTransaction
in interfaceMutiny.Session
- Returns:
- the
Mutiny.Transaction
, or null if no transaction was started usingMutiny.Session.withTransaction(Function)
. - See Also:
Mutiny.Session.withTransaction(Function)
,Mutiny.SessionFactory.withTransaction(BiFunction)
-
close
public io.smallrye.mutiny.Uni<java.lang.Void> close()
- Specified by:
close
in interfaceMutiny.Closeable
-
isOpen
public boolean isOpen()
- Specified by:
isOpen
in interfaceMutiny.Session
- Returns:
- false if
Mutiny.Closeable.close()
has been called
-
getFactory
public Mutiny.SessionFactory getFactory()
Description copied from interface:Mutiny.Session
TheMutiny.SessionFactory
which created this session.- Specified by:
getFactory
in interfaceMutiny.Session
-
getResultSetMapping
public <T> ResultSetMapping<T> getResultSetMapping(java.lang.Class<T> resultType, java.lang.String mappingName)
Description copied from interface:Mutiny.Session
Obtain a native SQL result set mapping defined via the annotationSqlResultSetMapping
.- Specified by:
getResultSetMapping
in interfaceMutiny.Session
-
getEntityGraph
public <T> jakarta.persistence.EntityGraph<T> getEntityGraph(java.lang.Class<T> rootType, java.lang.String graphName)
Description copied from interface:Mutiny.Session
Obtain a namedEntityGraph
- Specified by:
getEntityGraph
in interfaceMutiny.Session
-
createEntityGraph
public <T> jakarta.persistence.EntityGraph<T> createEntityGraph(java.lang.Class<T> rootType)
Description copied from interface:Mutiny.Session
Create a new mutableEntityGraph
- Specified by:
createEntityGraph
in interfaceMutiny.Session
-
createEntityGraph
public <T> jakarta.persistence.EntityGraph<T> createEntityGraph(java.lang.Class<T> rootType, java.lang.String graphName)
Description copied from interface:Mutiny.Session
Create a new mutable copy of a namedEntityGraph
- Specified by:
createEntityGraph
in interfaceMutiny.Session
-
unwrap
public <T> T unwrap(java.lang.Class<T> clazz)
-
-