У меня есть два объекта
HomeFeatures
<cfcomponent persistent="true">
<cfproperty name="id" column="homeFeatureid">
<cfproperty name="tabTitle">
<cfproperty name="title">
<cfproperty name="description">
<cfproperty name="sort">
<cfproperty name="moretext">
<cfproperty name="url">
<cfproperty name="active">
<cfproperty name="media" fieldtype="many-to-one" fkcolumn="mediaid" cfc="media" lazy="false" fetch="join" missingrowIgnored="true">
</cfcomponent>
И
Media
<cfcomponent persistent="true" table="cms.dbo.media">
<cfproperty name="id" column="mediaid">
<cfproperty name="filename">
</cfcomponent>
Таким образом, у меня есть несколько homeFeatures, с каждым из которых связан медиа-элемент.Один и тот же медиа-элемент может быть связан с несколькими homeFeatures, но каждый homeFeature может иметь только один медиа-элемент, к которому присоединяется homeFeatures.mediaid.
Если я делаю entityLoad ("homeFeatures"), я получаю 1 запрос для homeFeatures1 запрос таблицы мультимедиа для КАЖДОГО РЯДА В homeFeatures.Другими словами, это проблема N + 1.Зачем?Всего должно быть два запроса: один для получения всех homeFeatures, а второй - для всех медиа, чей медиа-идентификатор находится в списке, определенном homeFeatures.Я пытаюсь выполнить «энергичную» загрузку, как определено в http://www.rupeshk.org/blog/index.php/2009/09/coldfusion-orm-performance-tuning-fetching-strategy/ и в документах Adobe.
В этом конкретном представлении мне нужен доступ к записи мультимедиа для каждой записи, поэтому яленивый установить в ложь.Клянусь, я пробовал каждую итерацию lazy = false | true, batch = 999, fieldtype = один-к-одному | многие-к-одному, fetch = join | select, и все они приводят к одной и той же проблеме N + 1.
Есть идеи?Пожалуйста, помогите!