You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-java@ibatis.apache.org by Kai Mütz <km...@googlemail.com> on 2008/07/07 18:53:57 UTC
NPE after updating to 2.3.1/2.3.2
Hi,
I have a simple sqlmap:
resultMap class="mypackage.Role" id="Role">
<result property="role" column="role"/>
<result property="description" column="description"/>
</resultMap>
<resultMap id="User" class="mypackage.User">
<result property="username" column="name" jdbcType="VARCHAR" />
<result property="password" column="password" jdbcType="VARCHAR" />
<result property="email" column="email" jdbcType="VARCHAR" />
<result property="enabled" column="enabled" jdbcType="BIT" />
<result property="creationDate" column="creationDate" jdbcType="TIMESTAMP"
/>
<result property="roles" column="name" select="user.selectRolesByName" />
</resultMap>
<select id="selectUserByName" resultMap="User">
SELECT name, password, email, enabled, creationDate FROM User
WHERE name = #VALUE#
</select>
<select id="selectRolesByName" resultMap="Role">
SELECT auth.role, description FROM Authority auth
INNER JOIN Role ON auth.role = Role.role
WHERE auth.username = #VALUE#
</select>
With corresponding model objects User and Role. The roles property is of
type java.util.List. After upgrading from 2.3.0 to 2.3.1 or 2.3.2 I got the
following exception:
org.springframework.jdbc.UncategorizedSQLException: SqlMapClient operation;
uncategorized SQLException for SQL []; SQL state [null]; error code [0];
--- The error occurred in mypackage/UserSQLMap.xml.
--- The error occurred while applying a result map.
--- Check the user.User.
--- Check the result mapping for the 'roles' property.
--- Cause: java.lang.NullPointerException; nested exception is
com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in mypackage/UserSQLMap.xml.
--- The error occurred while applying a result map.
--- Check the user.User.
--- Check the result mapping for the 'roles' property.
--- Cause: java.lang.NullPointerException
at
org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.translate(SQ
LStateSQLExceptionTranslator.java:121)
at
org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translat
e(SQLErrorCodeSQLExceptionTranslator.java:322)
at
org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemp
late.java:212)
at
org.springframework.orm.ibatis.SqlMapClientTemplate.queryForObject(SqlMapCli
entTemplate.java:271)
at de.mypackage.UserIBatisDAO.load(UserIBatisDAO.java:92)
[.....]
Caused by: com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in mypackage/UserSQLMap.xml.
--- The error occurred while applying a result map.
--- Check the user.User.
--- Check the result mapping for the 'roles' property.
--- Cause: java.lang.NullPointerException
at
com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryWithC
allback(MappedStatement.java:204)
at
com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryForOb
ject(MappedStatement.java:120)
at
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapEx
ecutorDelegate.java:518)
at
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapEx
ecutorDelegate.java:493)
at
com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForObject(SqlMapSession
Impl.java:106)
at
org.springframework.orm.ibatis.SqlMapClientTemplate$1.doInSqlMapClient(SqlMa
pClientTemplate.java:273)
at
org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemp
late.java:209)
... 27 more
Caused by: java.lang.NullPointerException
at java.lang.Class.isAssignableFrom(Native Method)
at
com.ibatis.sqlmap.engine.type.TypeHandlerFactory.getTypeHandler(TypeHandlerF
actory.java:143)
at
com.ibatis.sqlmap.engine.type.TypeHandlerFactory.getTypeHandler(TypeHandlerF
actory.java:123)
at
com.ibatis.sqlmap.engine.mapping.result.ResultMap.prepareBeanParameterObject
(ResultMap.java:591)
at
com.ibatis.sqlmap.engine.mapping.result.ResultMap.getNestedSelectMappingValu
e(ResultMap.java:475)
at
com.ibatis.sqlmap.engine.mapping.result.ResultMap.getResults(ResultMap.java:
341)
at
com.ibatis.sqlmap.engine.execution.SqlExecutor.handleResults(SqlExecutor.jav
a:384)
at
com.ibatis.sqlmap.engine.execution.SqlExecutor.handleMultipleResults(SqlExec
utor.java:300)
at
com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQuery(SqlExecutor.java
:189)
at
com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.sqlExecuteQuery(M
appedStatement.java:221)
at
com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryWithC
allback(MappedStatement.java:189)
... 33 more
The following snippet has been added to TypeHandlerFactory.getTypeHandler()
method
if (handler == null && Enum.class.isAssignableFrom(type)) { //Line 143
handler = new EnumTypeHandler(type);
}
It seems that type is null.
Do I have to change anything in my sqlmap? Or what am I doing wrong?
Regards, Kai
Re: NPE after updating to 2.3.1/2.3.2
Posted by Kai Mütz <km...@googlemail.com>.
Just now I have seen that there is already an open issue:
https://issues.apache.org/jira/browse/IBATIS-522
2008/7/7 Kai Mütz <km...@googlemail.com>:
> Hi,
>
> I have a simple sqlmap:
>
> resultMap class="mypackage.Role" id="Role">
> <result property="role" column="role"/>
> <result property="description" column="description"/>
> </resultMap>
>
> <resultMap id="User" class="mypackage.User">
> <result property="username" column="name" jdbcType="VARCHAR" />
> <result property="password" column="password" jdbcType="VARCHAR" />
> <result property="email" column="email" jdbcType="VARCHAR" />
> <result property="enabled" column="enabled" jdbcType="BIT" />
> <result property="creationDate" column="creationDate"
> jdbcType="TIMESTAMP"
> />
> <result property="roles" column="name"
> select="user.selectRolesByName" />
> </resultMap>
>
> <select id="selectUserByName" resultMap="User">
> SELECT name, password, email, enabled, creationDate FROM User
> WHERE name = #VALUE#
> </select>
>
> <select id="selectRolesByName" resultMap="Role">
> SELECT auth.role, description FROM Authority auth
> INNER JOIN Role ON auth.role = Role.role
> WHERE auth.username = #VALUE#
> </select>
>
> With corresponding model objects User and Role. The roles property is of
> type java.util.List. After upgrading from 2.3.0 to 2.3.1 or 2.3.2 I got the
> following exception:
>
> org.springframework.jdbc.UncategorizedSQLException: SqlMapClient operation;
> uncategorized SQLException for SQL []; SQL state [null]; error code [0];
> --- The error occurred in mypackage/UserSQLMap.xml.
> --- The error occurred while applying a result map.
> --- Check the user.User.
> --- Check the result mapping for the 'roles' property.
> --- Cause: java.lang.NullPointerException; nested exception is
> com.ibatis.common.jdbc.exception.NestedSQLException:
> --- The error occurred in mypackage/UserSQLMap.xml.
> --- The error occurred while applying a result map.
> --- Check the user.User.
> --- Check the result mapping for the 'roles' property.
> --- Cause: java.lang.NullPointerException
> at
>
> org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.translate(SQ
> LStateSQLExceptionTranslator.java:121)
> at
>
> org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translat
> e(SQLErrorCodeSQLExceptionTranslator.java:322)
> at
>
> org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemp
> late.java:212)
> at
>
> org.springframework.orm.ibatis.SqlMapClientTemplate.queryForObject(SqlMapCli
> entTemplate.java:271)
> at de.mypackage.UserIBatisDAO.load(UserIBatisDAO.java:92)
>
> [.....]
>
> Caused by: com.ibatis.common.jdbc.exception.NestedSQLException:
> --- The error occurred in mypackage/UserSQLMap.xml.
> --- The error occurred while applying a result map.
> --- Check the user.User.
> --- Check the result mapping for the 'roles' property.
> --- Cause: java.lang.NullPointerException
> at
>
> com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryWithC
> allback(MappedStatement.java:204)
> at
>
> com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryForOb
> ject(MappedStatement.java:120)
> at
>
> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapEx
> ecutorDelegate.java:518)
> at
>
> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapEx
> ecutorDelegate.java:493)
> at
>
> com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForObject(SqlMapSession
> Impl.java:106)
> at
>
> org.springframework.orm.ibatis.SqlMapClientTemplate$1.doInSqlMapClient(SqlMa
> pClientTemplate.java:273)
> at
>
> org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemp
> late.java:209)
> ... 27 more
> Caused by: java.lang.NullPointerException
> at java.lang.Class.isAssignableFrom(Native Method)
> at
>
> com.ibatis.sqlmap.engine.type.TypeHandlerFactory.getTypeHandler(TypeHandlerF
> actory.java:143)
> at
>
> com.ibatis.sqlmap.engine.type.TypeHandlerFactory.getTypeHandler(TypeHandlerF
> actory.java:123)
> at
>
> com.ibatis.sqlmap.engine.mapping.result.ResultMap.prepareBeanParameterObject
> (ResultMap.java:591)
> at
>
> com.ibatis.sqlmap.engine.mapping.result.ResultMap.getNestedSelectMappingValu
> e(ResultMap.java:475)
> at
>
> com.ibatis.sqlmap.engine.mapping.result.ResultMap.getResults(ResultMap.java:
> 341)
> at
>
> com.ibatis.sqlmap.engine.execution.SqlExecutor.handleResults(SqlExecutor.jav
> a:384)
> at
>
> com.ibatis.sqlmap.engine.execution.SqlExecutor.handleMultipleResults(SqlExec
> utor.java:300)
> at
>
> com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQuery(SqlExecutor.java
> :189)
> at
>
> com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.sqlExecuteQuery(M
> appedStatement.java:221)
> at
>
> com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryWithC
> allback(MappedStatement.java:189)
> ... 33 more
>
>
> The following snippet has been added to TypeHandlerFactory.getTypeHandler()
> method
>
> if (handler == null && Enum.class.isAssignableFrom(type)) { //Line 143
> handler = new EnumTypeHandler(type);
> }
>
> It seems that type is null.
>
> Do I have to change anything in my sqlmap? Or what am I doing wrong?
>
> Regards, Kai
>
>
Re: NPE after updating to 2.3.1/2.3.2
Posted by Tom Duffey <td...@utilivisor.com>.
See link below.
On Jul 7, 2008, at 11:53 AM, Kai Mütz wrote:
> Caused by: java.lang.NullPointerException
> at java.lang.Class.isAssignableFrom(Native Method)
> at
> com
> .ibatis
> .sqlmap.engine.type.TypeHandlerFactory.getTypeHandler(TypeHandlerF
> actory.java:143)
https://issues.apache.org/jira/browse/IBATIS-522
Tom