Class QueryImpl

    • Field Detail

      • queryName

        protected String queryName
      • parameters

        protected Map<String,​jakarta.persistence.Parameter<?>> parameters
      • firstResultIndex

        protected int firstResultIndex
      • maxResults

        protected int maxResults
      • lockMode

        protected jakarta.persistence.LockModeType lockMode
      • isShared

        protected boolean isShared
        Stores if the wrapped query is shared, and requires cloning before being changed.
    • Constructor Detail

      • QueryImpl

        protected QueryImpl​(EntityManagerImpl entityManager)
        Base constructor for EJBQueryImpl. Initializes basic variables.
    • Method Detail

      • close

        public void close()
        This method should be called to close any left over open connection to the database (if there is one).
      • setAsDataModifyQuery

        protected void setAsDataModifyQuery()
        INTERNAL: Change the internal query to data modify query.
      • setAsSQLModifyQuery

        protected void setAsSQLModifyQuery()
        Internal method to change the wrapped query to a DataModifyQuery if necessary. When created, the query is created as a DataReadQuery as it is unknown if it is a SELECT or UPDATE. Note that this prevents the original named query from every being prepared.
      • setAsSQLReadQuery

        protected void setAsSQLReadQuery()
        Internal method to change the wrapped query to a DataReadQuery if necessary. This should never occur, but could possibly if the same query was executed as executeUpdate() then as getResultList(). Note that the initial conversion to modify would loose any read settings that had been set.
      • executeReadQuery

        protected Object executeReadQuery()
        Execute a ReadQuery by assigning the stored parameter values and running it in the database
        Returns:
        the results of the query execution
      • executeUpdate

        public int executeUpdate()
        Execute an update or delete statement.
        Returns:
        the number of entities updated or deleted
      • getDatabaseQueryInternal

        public DatabaseQuery getDatabaseQueryInternal()
        INTERNAL: Return the cached database query for this EJBQueryImpl. If the query is a named query and it has not yet been looked up, the query will be looked up and stored as the cached query.
      • getDetailedException

        protected RuntimeException getDetailedException​(DatabaseException e)
        Given a DatabaseException, this method will determine if we should throw a different more specific exception like a lock timeout exception.
      • getEntityManager

        public JpaEntityManager getEntityManager()
        Return the entityManager this query is tied to.
      • getInternalParameters

        protected Map<String,​jakarta.persistence.Parameter<?>> getInternalParameters()
        Return the internal map of parameters.
      • getLockMode

        public jakarta.persistence.LockModeType getLockMode()
        Get the current lock mode for the query.
        Returns:
        lock mode
        Throws:
        IllegalStateException - if not a Java Persistence query language SELECT query
      • getResultList

        public List getResultList()
        Execute the query and return the query results as a List.
        Returns:
        a list of the results
      • getSingleResult

        public Object getSingleResult()
        Execute a SELECT query that returns a single untyped result.
        Returns:
        the result
        Throws:
        jakarta.persistence.NoResultException - if there is no result
        jakarta.persistence.NonUniqueResultException - if more than one result
        IllegalStateException - if called for a Java Persistence query language UPDATE or DELETE statement
        jakarta.persistence.QueryTimeoutException - if the query execution exceeds the query timeout value set and only the statement is rolled back
        jakarta.persistence.TransactionRequiredException - if a lock mode other than NONE has been been set and there is no transaction or the persistence context has not been joined to the transaction
        jakarta.persistence.PessimisticLockException - if pessimistic locking fails and the transaction is rolled back
        jakarta.persistence.LockTimeoutException - if pessimistic locking fails and only the statement is rolled back
        jakarta.persistence.PersistenceException - if the query execution exceeds the query timeout value set and the transaction is rolled back
      • processParameters

        protected List<Object> processParameters()
        Internal method to add the parameters values to the query prior to execution. Returns a list of parameter values in the order the parameters are defined for the databaseQuery.
      • setDatabaseQuery

        public void setDatabaseQuery​(DatabaseQuery query)
        Replace the cached query with the given query.
      • setFirstResult

        public QueryImpl setFirstResult​(int startPosition)
        Set the position of the first result to retrieve.
        Parameters:
        startPosition - position of the first result, numbered from 0
        Returns:
        the same query instance
      • getFirstResult

        public int getFirstResult()
        Since:
        Java Persistence API 2.0
        See Also:
        Query.getFirstResult()
      • setFlushMode

        public QueryImpl setFlushMode​(jakarta.persistence.FlushModeType flushMode)
        Set the flush mode type to be used for the query execution.
      • setFirstResultInternal

        protected void setFirstResultInternal​(int startPosition)
        Set the position of the first result to retrieve.
        Parameters:
        startPosition - position of the first result, numbered from 0.
      • applyArguments

        protected static void applyArguments​(StoredProcedureCall call,
                                             DatabaseQuery query)
        Define the query arguments based on the procedure call.
      • getParameterId

        public static String getParameterId​(jakarta.persistence.Parameter param)
        Return the identifier of this parameter. This will be the name if it is set, else it will be the position
      • isBound

        public boolean isBound​(jakarta.persistence.Parameter<?> param)
        Return a boolean indicating whether a value has been bound to the parameter.
        Parameters:
        param - parameter object
        Returns:
        boolean indicating whether parameter has been bound
      • isFlushModeAUTO

        protected boolean isFlushModeAUTO()
        Spec. 3.5.2: "FlushMode.AUTO is set on the Query object, or if the flush mode setting for the persistence context is AUTO (the default) and a flush mode setting has not been specified for the Query object, the persistence provider is responsible for ensuring that all updates to the state of all entities in the persistence context which could potentially affect the result of the query are visible to the processing of the query."
      • setHintInternal

        protected void setHintInternal​(String hintName,
                                       Object value)
        Set an implementation-specific hint. If the hint name is not recognized, it is silently ignored.
        Throws:
        IllegalArgumentException - if the second argument is not valid for the implementation.
      • setLockMode

        public QueryImpl setLockMode​(jakarta.persistence.LockModeType lockMode)
        Set the lock mode type to be used for the query execution.
        Throws:
        IllegalStateException - if not a Java Persistence query language SELECT query
      • cloneSharedQuery

        protected void cloneSharedQuery()
        If the query was from the jpql parse cache it must be cloned before being modified.
      • convertTemporalType

        protected Object convertTemporalType​(Object value,
                                             jakarta.persistence.TemporalType type)
        Convert the given object to the class represented by the given temporal type.
        Returns:
        an object representing the given TemporalType.
      • setMaxResults

        public QueryImpl setMaxResults​(int maxResult)
        Set the maximum number of results to retrieve.
        Returns:
        the same query instance
      • getMaxResults

        public int getMaxResults()
        Since:
        Java Persistence API 2.0
        See Also:
        Query.getMaxResults()
      • getMaxResultsInternal

        public int getMaxResultsInternal()
        Since:
        Java Persistence API 2.0
        See Also:
        Query.getMaxResults()
      • setMaxResultsInternal

        public void setMaxResultsInternal​(int maxResult)
        Set the maximum number of results to retrieve.
      • propagateResultProperties

        protected void propagateResultProperties()
        Configure the firstResult, maxRows and lock mode in the EclipseLink ReadQuery.
      • setParameterInternal

        protected void setParameterInternal​(int position,
                                            Object value)
        Bind an argument to a positional parameter.
      • setParameterInternal

        protected void setParameterInternal​(String name,
                                            Object value,
                                            boolean isIndex)
        Bind an argument to a named or indexed parameter.
        Parameters:
        name - the parameter name
        value - to bind
        isIndex - defines if index or named
      • isValidActualParameter

        protected boolean isValidActualParameter​(Object value,
                                                 Class<?> parameterType)
      • getActiveSession

        protected Session getActiveSession()
      • performPreQueryFlush

        protected void performPreQueryFlush()
      • setRollbackOnly

        protected void setRollbackOnly()
      • throwNoResultException

        protected void throwNoResultException​(String message)
      • throwNonUniqueResultException

        protected void throwNonUniqueResultException​(String message)
      • getFlushMode

        public jakarta.persistence.FlushModeType getFlushMode()
        Since:
        Java Persistence 2.0
        See Also:
        Query.getFlushMode()
      • getHints

        public Map<String,​Object> getHints()
        Since:
        Java Persistence 2.0
        See Also:
        Query.getHints()
      • getParameter

        public <T> jakarta.persistence.Parameter<T> getParameter​(String name,
                                                                 Class<T> type)
        Since:
        Java Persistence 2.0
        See Also:
        Query.getParameter(String, Class)
      • getParameter

        public <T> jakarta.persistence.Parameter<T> getParameter​(int position,
                                                                 Class<T> type)
        Since:
        Java Persistence 2.0
        See Also:
        Query.getParameter(int, Class)
      • getParameter

        public jakarta.persistence.Parameter<?> getParameter​(String name)
        Since:
        Java Persistence 2.0
        See Also:
        Query.getParameter(String, Class)
      • getParameter

        public jakarta.persistence.Parameter<?> getParameter​(int position)
        Since:
        Java Persistence 2.0
        See Also:
        Query.getParameter(int, Class)
      • getParameterValue

        public <T> T getParameterValue​(jakarta.persistence.Parameter<T> param)
        Since:
        Java Persistence 2.0
        See Also:
        Query.getParameterValue(Parameter)
      • getParameterValue

        public Object getParameterValue​(String name)
        Return the value bound to the named parameter.
        Returns:
        parameter value
        Throws:
        IllegalStateException - if the parameter has not been been bound
      • getParameterValue

        public Object getParameterValue​(int position)
        Return the value bound to the positional parameter.
        Returns:
        parameter value
        Throws:
        IllegalStateException - if the parameter has not been been bound
      • getParameters

        public Set<jakarta.persistence.Parameter<?>> getParameters()
        Since:
        Java Persistence 2.0
        See Also:
        Query.getParameters()
      • getSupportedHints

        public Set<String> getSupportedHints()
        Since:
        Java Persistence 2.0
      • unwrap

        public <T> T unwrap​(Class<T> cls)
        Unwrap the query into the JPA implementation classes/interfaces or the underlying native EclipseLink query.
        Since:
        Java Persistence 2.0
        See Also:
        Query.unwrap(Class)