Hi,

When I have a inherited getter in the domain object and the corresponding 
attribute appears in an inline parameter map, I get a NullPointerException:

Caused by: com.ibatis.common.jdbc.exception.NestedSQLException: --- The error occurred in Evento.abator.sqlmap.xml. --- The error occurred while applying a parameter map. --- Check the Evento.abatorgenerated_updateByPrimaryKey-InlineParameterMap. --- Check the parameter mapping for the 'codigo' property. --- Cause: java.lang.NullPointerException
        at 
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:94)
        at 
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:505)
        at 
com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:90)
        at 
org.springframework.orm.ibatis.SqlMapClientTemplate$10.doInSqlMapClient(SqlMapClientTemplate.java:384)
        at 
org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:194)
        ... 56 more
Caused by: java.lang.NullPointerException
        at 
com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameter(BasicParameterMap.java:165)
        at 
com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.setParameters(BasicParameterMap.java:125)
        at 
com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExecutor.java:79)
        at 
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteUpdate(GeneralStatement.java:200)
        at 
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:78)
        ... 60 more

Here is BasicParameterMap.java:165:

   // Set Parameter
   TypeHandler typeHandler = mapping.getTypeHandler();
   if (value != null) {
=>    typeHandler.setParameter(ps, i + 1, value, mapping.getJdbcTypeName()); // 
<= typeHandler == null !
   } else if (typeHandler instanceof CustomTypeHandler) {
     typeHandler.setParameter(ps, i + 1, value, mapping.getJdbcTypeName());
   } else {

When I overwrite the getter in the subclass, the error disappears. Maybe iBatis 
can't get the return type of inherited methods and, as a result, can't resolve 
the type handler?

Regards,
Thiago

Reply via email to