私はドキュメントを読んでいて、マルチエンティティクエリを使用したネイティブ SQL に関するこのビットに出くわしました。 http://docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html/ch13.html#d5e3571 具体的には、この部分:
または、列を明示的にリストすることもできますが、この場合でも、Hibernate は各プロパティの SQL 列エイリアスを挿入します。列エイリアスのプレースホルダーは、テーブル エイリアスによって修飾されたプロパティ名です。次の例では、マッピング メタデータで宣言されているテーブルとは異なるテーブル (cat_log) から、猫とその母親を取得します。where 句でプロパティ エイリアスを使用することもできます。
String sql = "SELECT ID as {c.id}, NAME as {c.name}, " +
"BIRTHDATE as {c.birthDate}, MOTHER_ID as {c.mother}, {mother.*} " +
"FROM CAT_LOG c, CAT_LOG m WHERE {c.mother} = c.ID";
List loggedCats = sess.createSQLQuery(sql)
.addEntity("cat", Cat.class)
.addEntity("mother", Cat.class).list()
私が疑問に思っているのは、addEntity() 行の「猫」と「母」です。クエリでは、猫も母親も具体的に言及されていないため、それらが何を指しているのかわかりません。
4 つの異なるエンティティ (SQL に結合) からプロパティを返す同様のネイティブ SQL クエリを実行しようとしていますが、「結果セットから列の値を読み取れませんでした」というエラーが表示されます。
どんな助けでも大歓迎です。ありがとう!