У меня есть следующий класс
<class name="Product" table="Product">
<id name="ID" />
...
<map name="CustomFields" table="CustomFieldView">
<key column="RECORDID" />
<map-key column="CFName" type="String" />
<element column="CFValue" type="String" />
</map>
</class>
и SP для выбора продукта с помощью словаря CustomFields
<sql-query name="GetProducts">
<return alias="p" class="Product" />
<return-join alias="cf" property="p.CustomFields" />
SELECT {p.*}, {cf.*}
FROM Product p
INNER JOIN CustomFieldView cf ON p.ID = cf.RECORDID
// WHERE
</sql-query>
, когда я выбираю один продукт, например WHERE ID = 1234 ,затем он работает как положено - возвращает один продукт с заполненным свойством словаря CustomFields.Но когда я выбираю не один продукт, такой как WHERE ID IN (18780, 21642) или другие критерии , тогда я получаю продукты, дублированные «CustomFields.Count» раз, например, 2 продукта, каждый из которых имеет 20 пользовательских полей, затем 40 продуктови у каждого есть 20 допустимых пользовательских полей.
Я что-то пропустил в отображении?