Red Hat Training

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

11.4.4. ネイティブ SQL のクエリ

createSQLQuery() を使って、 SQL でクエリを表現することもできます。そして、Hibernate に、リザルトセットからオブジェクトへのマッピングを管理します。session.connection() を呼べばどんなときでも、直接、 JDBC Connection を使用できます。Hibernate API を使うのであれば、下記のように SQL の別名を括弧でくくらなければなりません。
List cats = session.createSQLQuery("SELECT {cat.*} FROM CAT {cat} WHERE ROWNUM<10")
    .addEntity("cat", Cat.class)
.list();
List cats = session.createSQLQuery(
    "SELECT {cat}.ID AS {cat.id}, {cat}.SEX AS {cat.sex}, " +
           "{cat}.MATE AS {cat.mate}, {cat}.SUBCLASS AS {cat.class}, ... " +
    "FROM CAT {cat} WHERE ROWNUM<10")
    .addEntity("cat", Cat.class)
.list();
SQL クエリは、Hibernate クエリと同じように、名前付きのパラメータと位置パラメータを持つことができます。 Hibernate におけるネイティブな SQL クエリの詳細については、17章ネイティブ SQLを参照してください。