java - 关于 Hibernate Batchsize 排序

标签 java sql hibernate batch-file

我是 Hibernate 新手,但我对 @Batchsize 注释的工作有疑问。我理解它是如何工作的,但我不明白它如何对实体 id 进行分组以供选择。例如 - 我有 2 个类(class):汽车和车轮。汽车有车轮列表,它必须是空的。我创建了 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>

但下次我会得到其他绑定(bind)。它可以是 1、15、23 等。但我误解了 - hibernate 如何为 IN 语句选择 id?为什么不按 ASC 或 DESC 排序(例如 - 1, 2, 3, 4, 5)?

最佳答案

这是汽车列表的填充顺序。如果你想按 id 升序排列,你可以这样做: List<Car> cars = session.createQuery("from Car order by id asc").list();

关于java - 关于 Hibernate Batchsize 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13380461/

相关文章:

java - 如何使 Hibernate 在 Oracle 上为 JPA GenerationType.AUTO 使用 SequenceHiLoGenerator?

java - 使用 JavaFX SceneGraph

java - Android ListView过滤问题

mysql - 我可以在没有外部包的情况下使用 Node.JS 连接到 SQL,还是使用一个通用包?

java - 是否可以在 @Pre/PostPersist 监听器中保留新实体?

java - 我们如何在 CrudRepository 中实现自定义查找方法以仅从数据库中获取特定列?

java - 使用 URL 字符串进行 API 调用的更好方法

sql - 非事务表中的原子事务

mysql - 如何通过 join 进行更新

java - 使用 JPA CRUD 显式级联删除父级而不使用注释