java - 如何预先加载实体列表?

标签 java hibernate jakarta-ee jpa

当您有一个实体列表时,您将如何预先加载特定实体具有的所有关系,例如:

List<Question> questions = query.getResultList();

查询位置:SELECT q FROM Question q;

我知道您可以使用 Hibernate.initialize() 但这是否意味着我需要循环访问存储库层中的列表?或者有更好的解决方案吗?

最佳答案

您可以使用10.2.3.5.3. JPQL Fetch Joins .

A FETCH JOIN enables the fetching of an association as a side effect of the execution of a query. A FETCH JOIN is specified over an entity and its related entities.

从上面的链接借用的示例:

SELECT mag FROM Magazine mag LEFT JOIN FETCH mag.articles WHERE mag.id = 1

我认为 FETCH JOIN 的一个优点是您的默认设置可以是惰性的。

关于java - 如何预先加载实体列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13334260/

相关文章:

mysql - hibernate 条件 : selection from two tables with Foreign key relationship?

java - 堆已满 com.mysql.jdbc.JDBC4Connection

mysql - 指定不同的主机以使用grails进行读写

java - struts 2文件上传没有这样的方法异常

java - 返回整数数组的 SQLite 查询数据

java - 我的应用程序因 firebaseAuth.getUid() 的空指针异常而崩溃

java - 如何通过 com.android.volley.Request 发送数组类型参数

java - 是否可以为 Java 创建自定义类加载器以有条件地从 JAR 或 CLASS_PATH 加载类?

spring-boot - 如何使 Spring Boot 应用程序可部署在 TomEE 7.x 上?

java - 继承main方法