如何通过不对数据库进行 N 次调用来获取实体集合中的惰性属性。示例:
transactions = getTransactionsBySomeCriteriaApiQuery(..); // n transactions
// this make 3*n calls to DB, I want to do only a few calls
transactions.forEach(res -> {
res.getLazyCollection1().size();
res.getLazyCollection2().size();
res.getLazyCollection3().size();
});
return transactions;
假设 n 是一个大数。 我想知道是否可以通过不对数据库进行大量调用来获取惰性数据。我正在使用 JPA (eclipselink),关系数据库。
编辑:确实是N+1选择问题,我想知道如何在eclipselink中解决它。请注意,我不想将实体映射从惰性更改为急切,因为其他地方需要它。我尝试过使用 fetch joins(在 criteriaAPI 上获取),但是当使用多个时这不起作用。
最佳答案
使用FETCH JOIN来检索初始查询中实际需要的数据。
关于java - 如何通过不对数据库进行 N 次调用来获取实体集合中的惰性属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58268914/