我是Hibernate的新手,但是我有一個關於@Batchsize註釋工作的問題。我明白它是如何工作的,但我不明白它如何將select實體ID分組。例如 - 我有兩個類:汽車和車輪。汽車有車輪列表,它必須是空的。我創造了10輛車 - 其中5輛車有一個輪子清單,其中5個沒有。然後我運行簡單的代碼關於Hibernate批量大小訂購
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和其他。但我誤解 - 如何休眠選擇ID的IN語句?爲什麼它不是由ASC或DESC命令(例如 - 1,2,3,4,5)?