Hibernate は初めてですが、@Batchsize アノテーションの動作について質問があります。それがどのように機能するかは理解していますが、選択のためにエンティティ ID をグループ化する方法がわかりません。たとえば、車と車輪の 2 つのクラスがあります。車にはホイールのリストがあり、空でなければなりません。10 台の車を作成します。そのうち 5 台には Wheel のリストがあり、5 台にはありません。次に、簡単なコードを実行します
List<Car> cars = session.createQuery("from Car").list();
for (Car car : cars) {
List<Wheel> wheels = car.getWheels();
for (Wheel wheel : wheels) {
System.out.println(wheel.getTitle());
}
}
その後、コンソールに次のようなものが表示されます。
Hibernate:
select
wheels0_.car_id as car3_1_,
wheels0_.id as id1_,
wheels0_.id as id0_0_,
wheels0_.title as title0_0_
from
Wheel wheels0_
where
wheels0_.car_id in (
?, ?, ?, ?, ?
)
17:50:35,505 TRACE LongType:151 - binding '25' to parameter: 1<br>
17:50:35,505 TRACE LongType:151 - binding '18' to parameter: 2<br>
17:50:35,505 TRACE LongType:151 - binding '17' to parameter: 3<br>
17:50:35,506 TRACE LongType:151 - binding '20' to parameter: 4<br>
17:50:35,506 TRACE LongType:151 - binding '23' to parameter: 5<br>
しかし、次回は他のバインディングを取得します。1、15、23 などを指定できます。しかし、私は誤解しています - どのように IN ステートメントの選択 ID を休止状態にしますか? ASC または DESC (例 - 1、2、3、4、5) で順序付けされていないのはなぜですか?