Учитывая ResultMap для запроса выбора iBatis, кажется обязательным, что все столбцы (которые сопоставлены со свойствами в ResultMap) фактически являются частью запроса SQL.
Но это немного раздражает, если кто-то хочетдля повторного использования ResultMaps, особенно если имеются «resultmaps внутри resultmaps».
Пример:
<resultMap id="myResultMap"
<result property="myPropName" column="myColumnName"/>
<result property="someCollection" resultMap="otherResultMap"/>
</resultMap>
<resultMap id="otherResultMap" groupBy="..."
<result property="otherPropName" column="otherColumnName"/>
</resultMap>
Конечно, эти две карты результатов определены, потому что есть случай с запросом, который используетобъединение для загрузки объектов-контейнеров, содержащих myPropName и someCollection, содержащих коллекцию внутренних объектов.
Но если я хочу повторно использовать то же самое определение карты результатов для другого запроса на выборку, который должен загружать только объекты-контейнеры (с myPropName), но не нужно загружать внутренние объекты (в someCollection), тогда будет сообщение об ошибке:
Имя столбца 'otherColumnName' не найдено в этом ResultSet
Нет ли возможности, которая позволяет инициализировать someCollection со значением null или emp?коллекцию, если соответствующие свойства (в данном случае otherPropName) отсутствуют в запросе SQL?
Действительно ли необходимо создать еще одну карту результатов для этого сценария?
Использование iBatis (еще не myBatis) версия 2.3.4 ...