1

次のデータセットがあります。

Class-
      |- Section
      |         |- Student1
      |         |         |-Day1Details
      |         |         |-Day2Details   
      |         |- Student2
      |         |         |-Day1Details
      |         |         |-Day2Details  
      |- Section
                :
                :

上記のサンプルデータを db に保持するために Hibernate ORM を使用しています。このデータを取得しようとすると、生徒ごとに個別にクエリを実行します。したがって、1000 人の学生がいる場合、データ セット全体を取得するために 1000 のクエリが起動され、DB への多数の I/OS が原因でアプリケーションのパフォーマンスに影響を与えます。

このデータを次のいくつかのクエリで収集したいと考えています。

select class,section, students from c,s,stu where student.sec=s.sec and s.class = c.class

select day_details from day_details_tab where student in (studentId from above query).

誰かがこれを達成するのを手伝ってくれますか?

4

1 に答える 1

0

HQL での結合と関連付けの使用法については、ドキュメントで説明されています。すべてを一度にロードする正しいクエリは次のとおりです。

 select clazz from Clazz clazz
 left join fetch clazz.sections section
 left join fetch section.students student
 left join fetch student.dayDetails

HQL はエンティティと関連付けを使用します。質問で行っているように、テーブル名と列名を決して使用しないでください。

于 2013-05-05T07:57:30.367 に答える