1

私は2つのテーブル「A」と「B」を手に入れました。これらのテーブルからデータを読み取りたい。まずはJPAから。私が次のことをした場合:

select a as a, b as b
from "A" a, "B" b
where ...;

遅延初期化エラー メッセージが表示されます。

これが私が声明を追加した理由です

left join fetch a."c" c

問題を解決しました。今、私はSQLステートメントで同じことが必要です。左結合フェッチには何を使用できますか?

私が試したら

select a as a, b as b
from "A" a, "B" b
left join fetch a."c" c
where ...;

エラーが表示されます: テーブル "Fetch" が見つかりません。

4

2 に答える 2

1

JPQLで属性を引用符で囲んでいるのはなぜですか? JPQL はエンティティ ベースであり、テーブル ベースではありません。「A a, B b where ..」から a, b を選択してみてください。エンティティ名とエンティティ内でマップされた属性を使用して、クエリを作成します。

遅延初期化エラーが発生した場合は、エンティティ間の関係がフェッチされていないことを意味します。それらをフェッチすると、エンティティをシリアル化できるようになり、逆シリアル化されたときにもう一方の端で関係が使用されます。しかし、フェッチは JPA のみの概念です。なぜ SQL で JPQL クエリを作成しようとしているのですか?

于 2013-09-16T15:40:03.397 に答える