Native Queries
JPA QL is a very rich syntax and should meet most of your querying needs. Sometimes, though, you want to take advantage of certain proprietary capabilities that are available only on a specific vendor’s database.
The entity manager service provides a way to create native SQL
queries and map them to your objects. Native queries can return entities,
column values, or a combination of the two. The EntityManager
interface has three methods for creating native queries: one for
returning scalar values, one for returning one entity type, and one for
defining a complex result set that can map to a mix of multiple entities
and scalar values.
Warning
You can always get the underlying JDBC connection through a
javax.sql.DataSource
injected by the
@Resource
and execute any SQL
statement you need. Be aware that your changes will not be reflected in
the current persistence context.
Scalar Native Queries
Query createNativeQuery(String sql)
This creates a native query that returns scalar results. It takes one parameter: your native SQL. It executes as is and returns the result set in the same form as JPA QL returns scalar values.
Simple Entity Native Queries
Query createNativeQuery(String sql, Class entityClass)
A simple entity native query takes an SQL statement and implicitly maps it to one entity based on the mapping metadata you declared for that entity. It expects that the columns returned in the result set of the native query will match perfectly with the entity’s O/R mapping. The entity ...
Get Enterprise JavaBeans 3.1, 6th Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.