Annotation Interface NamedQuery


Declares a named query written in the Jakarta Persistence query language. Query names are scoped to the persistence unit. A named query may be executed by calling EntityManager.createNamedQuery(String, Class).

The following is an example of the definition of a named query written in the Jakarta Persistence query language:

@NamedQuery(
    name = "findAllCustomersWithName",
    query = "SELECT c FROM Customer c WHERE c.name LIKE :custName")

The named query may be executed like this:

@PersistenceContext EntityManager em;
...
List<Customer> customers = em.createNamedQuery("findAllCustomersWithName", Customer.class)
              .setParameter("custName", "Smith")
              .getResultList();
The NamedQuery annotation can be applied to an entity class or mapped superclass.
Since:
1.0
  • Element Details

    • name

      String name
      (Required) The name used to identify the query in calls to EntityManager.createNamedQuery(java.lang.String).
    • query

      String query
      (Required) The query string in the Jakarta Persistence query language.
    • resultClass

      Class<?> resultClass
      (Optional) The class of each query result. The result class may be overridden by explicitly passing a class object to EntityManager.createNamedQuery(String, Class). If the result class of a named query is not specified, the persistence implementation is entitled to default the result class to Object or Object[].
      Default:
      void.class
    • lockMode

      LockModeType lockMode
      (Optional) The lock mode type to use in query execution. If a lockMode other than LockModeType.NONE is specified, the query must be executed in a transaction and the persistence context joined to the transaction.
      Since:
      2.0
      Default:
      NONE
    • hints

      QueryHint[] hints
      (Optional) Query properties and hints. May include vendor-specific query hints.
      Default:
      {}