Вам нужно fetchJoin()
, чтобы действительно загрузить свойства, помеченные как «ленивые». Это мало что значит для вашего примера (только загрузка значения domain.id
), но если вы начнете загружать сложные типы данных в подзапросе, вы, возможно, захотите, чтобы ваши данные присутствовали для корневого запроса.
При этом, имея сложный тип данных с "большим количеством" ленивых атрибутов, вы можете не захотеть / не нужно добавлять флаг выборки для всех них, а только для тех, которые вам действительно нужны для запроса. Так что просто вызов fetchAll может быть не то, что вам нужно все время. В случае сомнений я бы предложил включить ведение журнала sql и проанализировать сгенерированный sql, каждый из которых JOIN FETCH
представляет собой загруженную нагрузку.
И могу ли я безопасно удалить его из своего подзапроса
Итак, TL; DR: если вам никогда не приходилось думать о JOIN FETCH
в прошлом, то на самом деле: да, вы должны быть в состоянии безопасно игнорировать fetchAll
, так как это не добавит ничего нового кваши запросы. Это должен быть просто удобный способ избавить вас от некоторого стандартного кода на тот случай, если вы действительно захотите загрузить свои данные в полном объеме.