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