Red Hat Training

A Red Hat training course is available for Red Hat JBoss Web Server

9.2. ネイティブ SQL クエリの使用

結果セットが定義されたら、ネイティブ SQL クエリを実行できます。EntityManager は必要なすべての API を提供します。最初のメソッドは SQL 結果セットの名前を使用してバインドを実行し、2 つ目のメソッドはエンティティデフォルトマッピングを使用します (返されたカラムはマッピングで使用されたのと同じ名前を持つ必要があります)。3 つ目のメソッド (Hibernate エンティティマネージャでは未サポート) は純粋なスカラー結果を返します。
String sqlQuery = "select night.id nid, night.night_duration, night.night_date, area.id aid, "
    + "night.area_id, area.name from Night night, Area area where night.area_id = area.id "
    + "and night.night_duration >= ?";
Query q = entityManager.createNativeQuery(sqlQuery, "GetNightAndArea");
q.setParameter( 1, expectedDuration );
q.getResultList();
このネイティブクエリは、GetNightAndArea 結果セットに基づいて night と area を返します。
String sqlQuery = "select * from tbl_spaceship where owner = ?";
Query q = entityManager.createNativeQuery(sqlQuery, SpaceShip.class);
q.setParameter( 1, "Han" );
q.getResultList();
2 つ目のバージョンは、SQL クエリがメタデータでマップされたのと同じカラムを再利用する 1 つのエンティティを返すときに役に立ちます。