Uploaded image for project: 'iBatis for Java [READ ONLY]'
  1. iBatis for Java [READ ONLY]
  2. IBATIS-768

Support case insensitive Mapper / Mapper.xml relationships and duplicate detection

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 3.0 Beta 10
    • None
    • Core
    • None
    • Windows XP, JDK 1.5

    Description

      I am getting an exception when I try to call SqlSessionFactoryBuilder.build. The exception is:
      Exception in thread "main" org.apache.ibatis.exceptions.IbatisException:

          1. Error building SqlSession.
          2. The error may exist in my/test/DbMapper.xml
          3. The error occurred while processing mapper_resultMap[TestResult]
          4. Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.lang.RuntimeException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for my.test.DbMapper.TestResult
            at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:8)
            at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:32)
            at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:23)
            at amdocs.pv.configurationtool.client.PvConfigurationPlugin.login(PvConfigurationPlugin.java:376)
            at amdocs.pv.configurationtool.client.PvConfigurationPlugin.main(PvConfigurationPlugin.java:353)
            Caused by: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.lang.RuntimeException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for my.test.DbMapper.TestResult
            at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:71)
            at org.apache.ibatis.builder.xml.XMLConfigBuilder.parse(XMLConfigBuilder.java:55)
            at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:29)
            ... 3 more
            Caused by: java.lang.RuntimeException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for my.test.DbMapper.TestResult
            at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:59)
            at org.apache.ibatis.builder.xml.XMLMapperBuilder.parse(XMLMapperBuilder.java:39)
            at org.apache.ibatis.builder.annotation.MapperAnnotationBuilder.loadXmlResource(MapperAnnotationBuilder.java:71)
            at org.apache.ibatis.builder.annotation.MapperAnnotationBuilder.parse(MapperAnnotationBuilder.java:49)
            at org.apache.ibatis.binding.MapperRegistry.addMapper(MapperRegistry.java:43)
            at org.apache.ibatis.session.Configuration.addMapper(Configuration.java:354)
            at org.apache.ibatis.builder.xml.XMLMapperBuilder.bindMapperForNamespace(XMLMapperBuilder.java:234)
            at org.apache.ibatis.builder.xml.XMLMapperBuilder.parse(XMLMapperBuilder.java:40)
            at org.apache.ibatis.builder.xml.XMLConfigBuilder.mapperElement(XMLConfigBuilder.java:247)
            at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:69)
            ... 5 more
            Caused by: java.lang.IllegalArgumentException: Result Maps collection already contains value for my.test.DbMapper.TestResult
            at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:395)
            at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:370)
            at org.apache.ibatis.session.Configuration.addResultMap(Configuration.java:294)
            at org.apache.ibatis.builder.MapperBuilderAssistant.addResultMap(MapperBuilderAssistant.java:128)
            at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:148)
            at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:118)
            at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElements(XMLMapperBuilder.java:113)
            at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:55)
            ... 14 more

      The configuration files I have are:
      config2.xml
      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE configuration
      PUBLIC "-//ibatis.apache.orgg//DTD Config 3.0//EN"
      "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">

      <configuration>
      <typeAliases>
      <typeAlias alias="Label" type="java.awt.Label" />
      </typeAliases>

      <environments default="development">
      <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
      <property name="driver" value="oracle.jdbc.OracleDriver"/>
      <property name="url" value="jdbc:oracle:thin:@${server}:${port}:${instance}"/>
      <property name="username" value="${username}"/>
      <property name="password" value="${password}"/>
      </dataSource>
      </environment>
      </environments>

      <mappers>
      <mapper resource="my/test/DBMapper.xml"/>
      </mappers>
      </configuration>

      DBMapper.xml
      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE mapper
      PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
      "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
      <mapper namespace="my.test.DbMapper">
      <resultMap id="TestResult" type="Label">
      <result property="text" column="test"/>
      </resultMap>

      <select id="selectTest" resultMap="TestResult">
      select * from test
      </select>
      </mapper>

      I found out that the problem reproduces only when I have the following interface defined:
      package my.test;

      public interface DbMapper {
      public java.awt.Label selectTest();
      }

      Somehow, it parses the xml again and it gives the exception.

      Attachments

        Activity

          People

            Unassigned Unassigned
            dstanciu Daniel Stanciu
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: