ORM позволяет выполнять SQL запросы к базе данных, возвращая как списки отдельных полей, так и экземпляры сущностей. Для этого
               необходимо создать объект Query или TypedQuery вызовом одного из методов EntityManager.createNativeQuery(). 
            
Если  выполняется выборка отдельных колонок таблицы, то результирующий список будет содержать строки в виде Object[]. Например:
            
Query query = em.createNativeQuery("select ID, NAME from SALES_CUSTOMER where NAME like ?1");
query.setParameter(1, "%Company%");
List list = query.getResultList();
for (Iterator it = list.iterator(); it.hasNext(); ) {
    Object[] row = (Object[]) it.next();
    UUID id = (UUID) row[0];
    String name = (String) row[1];
}Следует иметь в виду, при использовании SQL колонки, соответствующие атрибутам сущностей типа UUID, возвращаются в виде UUID или в виде String, в зависимости от используемой СУБД и JDBC драйвера:
            
- 
                     
HSQLDB -
String - 
                     
PostgreSQL, драйвер
postgresql-8.3-603.jdbc4.jar-String - 
                     
PostgreSQL, драйвер
postgresql-9.1-901.jdbc4.jar-UUID - 
                     
Microsoft SQL Server, драйвер
jtds-1.2.4.jar-String - 
                     
Oracle -
String 
Параметры этого типа также должны задаваться либо как UUID, либо своим строковым представлением, в зависимости от используемой СУБД и JDBC драйвера. Для обеспечения независимости кода
               от используемой СУБД рекомендуется использовать 
                              DbTypeConverter
                            .
            
Если вместе с текстом запроса передан класс результирующей сущности, то возвращается TypedQuery и после выполнения производится попытка отображения результатов запроса на атрибуты сущности. Например:
            
TypedQuery<Customer> query = em.createNativeQuery(
    "select * from SALES_CUSTOMER where NAME like ?1",
    Customer.class);
query.setParameter(1, "%Company%");
List<Customer> list = query.getResultList();Поведение SQL запросов, возвращающих сущности, и модифицирующих запросов (update, delete), по отношению к текущему персистентному контексту аналогично описанному для JPQL запросов.
            
См. также Раздел 4.7.10, «Выполнение SQL с помощью QueryRunner».

