Я использую Spring и MyBatis для своего приложения. У меня не было никаких исключений, пока я не изменил пакет на класс, который я использую как ResultType. С тех пор я получаю следующую ошибку при запуске приложения:
Caused by: java.lang.IllegalArgumentException: Mapped Statements collection already contains value for app2Check.core.dao.ThemeSentimentDAO.getSplitMatchingThemes
at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:782)
at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:754)
at org.apache.ibatis.session.Configuration.addMappedStatement(Configuration.java:578)
at org.apache.ibatis.builder.MapperBuilderAssistant.addMappedStatement(MapperBuilderAssistant.java:288)
at org.apache.ibatis.builder.xml.XMLStatementBuilder.parseStatementNode(XMLStatementBuilder.java:107)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.buildStatementFromContext(XMLMapperBuilder.java:135)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.buildStatementFromContext(XMLMapperBuilder.java:128)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:118)
... 67 more
Вот мой xml маппер (я должен был подвергать цензуре запросы, но они не были изменены):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="app2Check.core.dao.ThemeSentimentDAO">
<select id="getSplitMatchingThemes" resultType="xyz.objects.sentences.SplitSent"><!-- Previously resultType="xyz.sentences.SplitSent" -->
SELECT TOP (#{numSplitPerPage})
...
<if test = "redo == false">
...
</if>
WHERE (
<foreach collection="themes" item="t" index="index" separator=" OR ">
(
..
)
</foreach>
)
</select>
<select id="getThemes" resultType="xyz.objects.Theme">
...
</select>
<select id="countSplitMatchingTheme" resultType="xyz.utils.SplitCount">
...
</select>
</mapper>
Это мой интерфейс картографа:
public interface ThemeSentimentDAO {
public List<Theme> getThemes(@Param("appId") String appId);
public List<SplitFeedback> getSplitMatchingThemes(
@Param("appId") String appId,
@Param("customerCare") String customerCare,
@Param("redo") boolean redo,
@Param("analysisDate") Timestamp analysisDate,
@Param("themes") List<Theme> themes,
@Param("numSplitPerPage") int numSplitPerPage
);
public SplitCount countSplitMatchingTheme(
@Param("appId") String appId,
@Param("customerCare") String customerCare,
@Param("redo") boolean redo,
@Param("themes") List<Theme> themes
);
}