Эй, я использую Mybatis с Spring Annotations.java.lang.IllegalArgumentException: Результат Коллекция карт уже содержит значение для
и получаю эту ошибку:
Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.mypackage.mappers.QuestionsMapper.Question
здесь есть класс домена (Sans методы получения и установки):
public class Question {
String optionsAsString;
String typeAsString;
Integer fieldId;
String title;
String description;
public Question(){
}
}
вот мой класс Mapper.Java
@MapperScan
public interface Mapper {
public List<Question> getQuestions(@Param("shifts") List<Integer> shifts, @Param("job_id") Integer job_id);
}
наконец здесь находится Mapper.xml
<mapper namespace="com.mypackage.mappers.Mapper">
<resultMap type="com.mypackage.domain.Question" id="Question">
<id column="field_id" property="fieldId" />
<result column="data_type" property="typeAsString" />
<result column="title" property="title" />
<result column="description" property="description" />
<result column="options" property="optionsAsString" />
</resultMap>
<select id="com.mypackage.mappers.Mapper.getQuestions" resultMap="Question" timeout="10">
SELECT
f.field_id,
f.data_type,
f.title,
f.options,
f.description
FROM
(SELECT DISTINCT q.*
FROM
question_services qs INNER JOIN
questions q
ON qs.field_id=q.field_id AND q.job_id = qs.job_id INNER JOIN
services s
ON qs.service_id = s.service_id and qs.job_id = s.job_id
WHERE s.job_id = #{job_id} AND s.service_id in
<foreach item="shift" collection="shifts" open="(" separator="," close=")">
#{shift}
</foreach>
) f
</select>
Я склонен полагать, что существует что-то не так с XML-оператора выбора. Вероятно, я использую foreach. У меня есть другой картограф, использующий аналогичный формат, который он просто не использует для каждого, и у него нет никаких проблем.
У вас есть другое сопоставление с id = "Question"? – D0dger
Нет. Это то, что я даже пытался изменить, я имел другое сопоставление, где-то имя Вопрос. Я просматривал свои сопоставления и не могу найти его, и изменение имени дает мне ту же ошибку, что и ссылка на новое имя. –
Является ли 'Mapper.Java' и' Mapper.xml' в одном каталоге? – Blank