Я пробовал следующее сопоставление:
<select id="getRequestDetail" statementType="CALLABLE" parameterType="test.domain.RequestDetailRequest" resultMap="ExternalManagersMap, SubjectServicesMap">
{call pop.dbo.getRequestDetail ( #{uid, mode=IN, jdbcType=VARCHAR},
#{requestId, mode=IN, jdbcType=INTEGER},
#{resultStatus, mode=OUT, jdbcType=INTEGER},
#{resultMsg, mode=OUT, jdbcType=VARCHAR} )}
</select>
<resultMap type='test.domain.User' id="ExternalManagersMap">
<result property="name" column="externalManager"/>
</resultMap>
<resultMap type='test.domain.Service' id="SubjectServicesMap">
<result property="name" column="serviceName"/>
<result property="id" column="serviceId"/>
</resultMap>
Но у меня ошибка:
org.apache.ibatis.exceptions.TooManyResultsException: ожидалось, что один результат (или ноль) будет возвращен selectOne (), но найдено: 2
Мой интерфейс: Map<String, Object> getRequestDetail(RequestDetailRequest detailRequest);
Не могли бы вы помочь мне, как сопоставить несколько наборов результатов с вызывающей процедурой? Моя БД - Sybase.
2 ответа
SqlSession.selectOne указывает, что вы ожидаете только одну строку, возвращаемую из процедуры.
Вместо этого вы должны использовать sqlSession.select
Метод с именем getRequestDetail
необходимо изменить возвращаемый тип на List<List<?>>
вместо Map<String, Object>
.
И тогда вы можете получить тип результата List. Он содержит тип ExternalManagersMap
в индексе 0 как список и тип SubjectServicesMap
в индексе 1 как список.
Итак, вы можете писать так.
List<List> result = getRequestDetail(RequestDetailRequest detailRequest);
ExternalManagersMap external = (ExternalManagersMap) result.get(0);
SubjectServicesMap subject = (SubjectServicesMap) result.get(1);
Похожие вопросы
Новые вопросы
java
Java - это язык программирования высокого уровня. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег редко используется отдельно и чаще всего используется вместе с [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] и [maven].