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

NoSuchMethodException when trying to instantiate associated object with int in constructor

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 3.0 Beta 9
    • 3.0 Beta 10
    • None
    • None
    • Windows XP, Java 1.6 Updat 16

    Description

      I'm trying to use the following resultMap:

      <resultMap type="ACE" id="aceMap">
      <result property="actorName" column="actorName"/>
      <result property="isGranted" column="isGranted"/>

      <association property="permission" javaType="Permission">
      <constructor>
      <idArg column="permissionId" javaType="int"/>
      <arg column="permissionName" javaType="String"/>
      </constructor>
      </association>
      </resultMap>

      The constructor of "Permission" takes int (primitive type) and String as parameter. This results into the following Exception when iBATIS tries to instantiate the object:

          1. Error querying database. Cause: org.apache.ibatis.executor.ExecutorException: Error getting nested result map values
            for 'permission'. Cause: org.apache.ibatis.reflection.ReflectionException: Error instantiating class com.brainware.gb.security.Permission with invalid types (Integer,String,) or values (0,READ,). Cause: java.lang.NoSuchMethodException: com.brainware.gb.security.Permission.<init>(java.lang.Integer, java.lang.String)
          2. The error may involve com.brainware.gb.security.db.internal.SecurityMapper.getACEs-Inline
          3. The error occurred while setting parameters
          4. Cause: org.apache.ibatis.executor.ExecutorException: Error getting nested result map values for 'permission'. Cause: org.apache.ibatis.reflection.ReflectionException: Error instantiating class com.brainware.gb.security.Permission with invalid types (Integer,String,) or values (0,READ,). Cause: java.lang.NoSuchMethodException: com.brainware.gb.security.Permission.<init>(java.lang.Integer, java.lang.String)
            at com.brainware.gb.base.data.db.AbstractDBDataRepository$SqlSessionInvocationHandler.wrapException(AbstractDBDataRepository.java:986)
            at com.brainware.gb.base.data.db.AbstractDBDataRepository$SqlSessionInvocationHandler.invoke(AbstractDBDataRepository.java:966)
            at $Proxy6.selectList(Unknown Source)
            ...

      The problem seems to be that iBATIS tries to find a constructor with java.lang.Integer, not for the primitive type.

      Attachments

        Activity

          People

            cbegin Clinton Begin
            fkorf Frank Korf
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: