我是 Hibernate 的新手,但我有一个关于 @Batchsize 注释工作的问题。我了解它是如何工作的,但我不明白它是如何对实体 ID 进行分组以供选择的。例如 - 我有 2 个课程:汽车和车轮。汽车有车轮列表,它必须是空的。我创建了 10 辆汽车——其中 5 辆有车轮列表,而 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 等。但我误解了 - 如何休眠选择 ID 的 IN 语句?为什么不按 ASC 或 DESC 排序(例如 - 1、2、3、4、5)?