Я использую запрос критерия для выборки клиентов.
public class PurchaseOrder
{
.....
.....
@ManyToOne(fetch=FetchType.EAGER, optional=true)
@JoinColumn(name="ReportingCustomer_ID", nullable=true, insertable=false, updatable=false)
@Fetch(FetchMode.JOIN)
@NotFound(action=NotFoundAction.IGNORE)
public ReportingCustomer getReportingCustomer()
{
return reportingCustomer;
}
}
При получении PurchaseOrder он выполняет ЛЕВОЕ НАРУЖНОЕ СОЕДИНЕНИЕ, как показано ниже
select ... from PurchaseOrder this_ left outer join ReportingCustomer reportingc2_
on this_.ReportingCustomer_ID=reportingc2_.ReportingCustomer_ID
where ...
- При наличиизапись в ReportingCustomer - запускается только вышеуказанный запрос.
- Когда в ReportingCustomer нет записи для этой записи - запускается запрос для каждого запроса PURCHASEORDER (m + 1).
Я использую драйвер "Progress" для подключения к БД.Я не уверен, почему он запускает m + 1 запросов только в сценарии 2.