2

1つのクエリで3つのテーブルからデータを取得しようとしています。「仕事の経験」、「スキル」、「説明」があります。アイデアは、1つのWorkexperienceに、それに関連する複数のスキルと複数の説明があるということです。1つの特定の雇用者からすべてのWorkexperiencesを照会しようとしています(Workexperienceテーブルには「EmployerId」列があります)。

説明を取得することから始めました。これは機能します。

select distinct w from Workexperience w 
  left join fetch w.skills
    where w.employer=(select e from Employer e where e.username = :username)

これにより、これまでのところ、すべてのWorkexperiencesとそのスキルが得られます。説明を追加しようとすると、うまくいきません。

select distinct w from Workexperience as w
  left join fetch w.skills
  left join fetch w.descriptions
    where w.employer=(select e from Employer e where e.username = :username)

これは私に古典的なlazyinitializationexceptionを与えます。

だから私の質問は:1つのクエリで複数の「左結合フェッチ」ステートメントを使用できますか?もしそうなら、どのようにこれを行いますか?

前もって感謝します!

4

1 に答える 1

3

いいえ、できません(仕様によると)。

ただし、Hibernateはそれをサポートしていることに注意してください。

于 2013-02-05T14:15:55.900 に答える