We just started using iBatis, so we don't have a large unit test suite to run 
yet.  But will continue to use it and let you know of our vote of confidence.

Thanks
Doug



----- Original Message ----
From: Clinton Begin <[EMAIL PROTECTED]>
To: user-java@ibatis.apache.org
Sent: Sunday, August 3, 2008 11:01:51 AM
Subject: Re: Problem using SelectByExample with TypeHandlerCallback


The sooner you deploy 2.3.3 to a staging environment and run your unit test 
suite, the sooner it will become official!  :-)

See the two stories on the frontpage, and the blue sidebar on the download page:

http://ibatis.apache.org/
http://ibatis.apache.org/javadownloads.cgi

Cheers,
Clinton


On Sun, Aug 3, 2008 at 9:22 AM, Doug Flex <[EMAIL PROTECTED]> wrote:

Hi Jeff,

Thanks for your proposed solution.  It looks very promising and it should work, 
but it doesn't.  I got the same error.  I also had my co-worker try it on 
different table with different test case, it also failed.

The problem was seen using 2.3.0 release.  I downloaded 2.3.3 beta version and 
the problem disappeared.
 
I would be happy to try any other solutions you can think of.  In the mean 
time, I'll move foward with 2.3.3 Beta.  Hope that 2.3.3 will be official 
release very soon.
 
 
Thanks
Doug



----- Original Message ----
From: Jeff Butler <[EMAIL PROTECTED]>
To: user-java@ibatis.apache.org
Sent: Thursday, July 31, 2008 6:56:14 PM
Subject: Re: Problem using SelectByExample with TypeHandlerCallback


Try this column override in your (i)abatorConfig:
 
        <columnOverride column="LOCATION_TYPE" javaType="LocationType"
         typeHandler="LocationTypeTypeHandler" />  

This will cause (i)abator to generate code that explicitly calls the type 
handler.  I'm fairly certain this will solve the problem.  Without this, then 
we're possibly dealing with a limitation in iBATIS.  The ByExample dynamic SQL 
is very complex and I don't think iBATIS is able to do as much runtime 
introspection to resolve the type handler as is needed here. 
 
Jeff Butler


On Thu, Jul 31, 2008 at 11:10 AM, Doug Flex <[EMAIL PROTECTED]> wrote:

Hi,

I have a problem with Null Pointer Exception when trying to use SelectByExample 
with enum criteria.

I have done the following to seek for answer but have no success yet.  Please 
help!

- google
- looked through iBatis FAQ
- looked through iBatis WIKI
- looked thought iBatis mailing archive

the code described below omits full package path for readability
------------------
1) I specified type conversion for a column in AbatorConfig.xml.  This 
generated code with the
VARCHAR mapped to Java enum LocationType correctly.  The generated code was 
Java 5, Spring Dao style.
    <table tableName="LOCATION">
        <columnOverride column="LOCATION_TYPE" javaType="LocationType"/>  
     </table>

2) I have a class that called LocationTypeTypeHandler which implement 
TypeHandlerCallback to map database VARCHAR to Java enum LocationType

3)  I specified the usage of the callback in SQLMapConfig.xml as follows:
<typeHandler javaType="LocationType" 
                  jdbcType="VARCHAR" 
                  callback="LocationTypeTypeHandler"/>
4) Most of the cases such as SelectByPrimimaryKey, insert, etc...seems to be 
working.  So, I know that my enum type conversion using LocationTypeTypeHandler 
was configured and invoked correctly.  The problem I ran into was when using 
SelectByExample with line d) below.  If I commented out line d) then the query 
works ok.

       a) LocationExample example = new LocationExample();
       b) LocationExample.Criteria criteria = example.createCriteria();
       c) criteria.andLocationIdEqualTo(1);
       d) criteria.andLocationTypeEqualTo(LocationType.GENERAL);
       e) List<Location> result = locationDao.selectByExample(example);

5) The stack trace are shown below.  Using the debugger, all the data looks to 
be valid, especially 'oredCriteria[0].criteriaWithSingleValue[1].value'

Caused by: com.ibatis.common.jdbc.exception.NestedSQLException:   
--- The error occurred while applying a parameter map.  
--- Check the LOCATION.abatorgenerated_selectByExample-InlineParameterMap.  
--- Check the parameter mapping for the 
'oredCriteria[0].criteriaWithSingleValue[1].value' property.  
--- Cause: java.lang.NullPointerException
Caused by: java.lang.NullPointerException
    at 
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:188)
    at 
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForList(GeneralStatement.java:123)
    at 
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:614)
    at 
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:588)
    at 
com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:118)
    at 
org.springframework.orm.ibatis.SqlMapClientTemplate$3.doInSqlMapClient(SqlMapClientTemplate.java:298)
    at 
org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:209)
    ... 23 more
Caused by: java.lang.NullPointerException
    at 
com.ibatis.sqlmap.engine.type.UnknownTypeHandler.setParameter(UnknownTypeHandler.java:70)
    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.executeQuery(SqlExecutor.java:180)
    at 
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteQuery(GeneralStatement.java:205)
    at 
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:173)


      

Reply via email to