Jakarta Persistence (JPA) Annotation Type
jakarta.persistence.NamedNativeQuery
- Implemented Interfaces:
Annotation
- Target:
- Type
Declares a named native SQL query and, optionally, the mapping of the result of the native SQL query. Query names are scoped to the persistence unit. A named query may be executed by calling
EntityManager.createNamedQuery. In simple cases, a resultClass specifies how the native SQL query result set should be interpreted, for example:
@NamedNativeQuery( name = "findWidgets", query = "SELECT o.id, o.quantity, o.item " + "FROM Order o, Item i " + "WHERE (o.item = i.id) AND (i.name = 'widget')", resultClass = com.acme.Order.class )
In more complicated cases, a result set mapping is needed, which may be specified using either a separate annotation:
@NamedNativeQuery( name = "OrderItems", query = "SELECT o.id, o.quantity, o.item, i.id, i.name, i.description " + "FROM Order o, Item i " + "WHERE (o.quantity > 25) AND (o.item = i.id)", resultSetMapping = "OrderItemResults" ) @SqlResultSetMapping(name="OrderItemResults", entities={ @EntityResult(entityClass=com.acme.Order.class), @EntityResult(entityClass=com.acme.Item.class) })or using the elements of this annotation:
@NamedNativeQuery( name = "OrderItems", query = "SELECT o.id, o.quantity, o.item, i.id, i.name, i.description " + "FROM Order o, Item i " + "WHERE (o.quantity > 25) AND (o.item = i.id)", resultSetMapping = "OrderItemResults"); entities={ @EntityResult(entityClass=com.acme.Order.class), @EntityResult(entityClass=com.acme.Item.class) } )
The NamedNativeQuery annotation can be applied to an entity class or mapped superclass.
- See Also:
- Since:
- Jakarta Persistence (JPA) 1.0
Public Instance Methods
May not be used in combination with
resultSetMapping.- Since:
- Jakarta Persistence (JPA) 3.2
May not be used in combination with
resultSetMapping.- Since:
- Jakarta Persistence (JPA) 3.2
May not be used in combination with
resultSetMapping.- Since:
- Jakarta Persistence (JPA) 3.2
(May include vendor-specific query hints.)
- Since:
- Jakarta Persistence (JPA) 1.0
String name()- Since:
- Jakarta Persistence (JPA) 1.0
String query()- Since:
- Jakarta Persistence (JPA) 1.0
Class<?> resultClass()If a result set mapping is specified, the specified result class must agree with the type inferred from the result set mapping. If a
resultClass is not explicitly specified, then it is inferred from the result set mapping, if any, or defaults to Object or Object[]. The query result class may be overridden by explicitly passing a class object to EntityManager.createNamedQuery.- Since:
- Jakarta Persistence (JPA) 1.0
String resultSetMapping()Annotation Elements
This is a marker annotation with no members/elements.
Additional JDK methods inherited from java.lang.annotation.Annotation
java.lang.annotation.Annotation/annotationType(), java.lang.annotation.Annotation/equals(Object), java.lang.annotation.Annotation/hashCode(), java.lang.annotation.Annotation/toString()