3

私はドキュメントを読んでいて、マルチエンティティクエリを使用したネイティブ 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 クエリを実行しようとしていますが、「結果セットから列の値を読み取れませんでした」というエラーが表示されます。

どんな助けでも大歓迎です。ありがとう!

4

0 に答える 0