We've received suggestions to the effect that it would be useful if
queries could be created dynamically (e.g., at initialization time)
and then be assigned names so that they could be used for execution
later.
These queries would have the same scope as other named queries,
and be associated with the persistence unit.
For example:
TypedQuery<Integer> tq = em.createQuery("SELECT e.seniority FROM Employee e WHERE e.seniority > 10", Integer.class);
emf.addNamedQuery("Employee_Seniority", tq);
Any configuration of the query object (except for actual parameter
binding) specified when the query was added as a named query would be
retained as part of the named query. [I.e., this would include
configuration information like setMaxResults, setHint, setFlushMode,
setLockMode, result set mapping information, and information
registered about stored procedure parameters...]
When the query is executed, information that is settable by means
of the Query API can be overridden. Information that is overridden
does not affect the named query as registered with the EMF, and
thus does not affect subsequent Query objects created by means
of the name via the EntityManager createNamedQuery method.
Linda