Hi,
I'm new to iBATIS and need some help with a problem I'm having.

I have a table called CURVE which contains curve points for loads of curves
(graph curves), where each curve can have a dynamic number of curve points.

Table structure:
CURVE_NAME | CURVE_CATEGORY | OFFSET | VALUE

CURVE_NAME and CURVE_CATEGORY are the primary keys, OFFSET is the x-value
and VALUE is the y-value

SqlMap :

<resultMap id="CurveBOResult" class="test.bo.CurveBO">
   <result column="CURVE_NAME" jdbcType="CHAR" property="curveName"/>
  <result column="CURVE_CATEGORY" jdbcType="CHAR"
property="curveCategory"/>
   <result property="curvePoints" select="getCurvePoints"
column="{curveName=CURVE_NAME,curveCategory=CURVE_CATEGORY}"/>
 </resultMap>

 <resultMap id="CurvePointBOResult" class="test.bo.CurvePointBO">
   <result column="VALUE" jdbcType="DOUBLE" property="value"/>
   <result column="OFFSET" jdbcType="DOUBLE" property="offset"/>
 </resultMap>

   <select id="selectAll" resultMap="CurveBOResult">
       select distinct
          CURVE_NAME, CURVE_CATEGORY
       from dbo.CURVE
   </select>

   <select id="getCurvePoints" resultMap="CurvePointBOResult">
       select
           VALUE, OFFSET
       from dbo.CURVE
       where CURVE_NAME = #curveName#
         and CURVE_CATEGORY = #curveCategory#
   </select>

CurveBO.java has a:  private List<CurvePointBO> curvePoints = new
ArrayList<CurvePointBO>(19);
with public getter and setter.

When I run this I get the following error message:

org.springframework.jdbc.UncategorizedSQLException: SqlMapClient operation;
uncategorized SQLException for SQL []; SQL state [null]; error code [0];
--- The error occurred in sqlmap/dbo_CURVES_SqlMap.xml.
--- The error occurred while applying a result map.
--- Check the dbo_CURVE.CreditSpreadBOResult.
--- Check the result mapping for the 'curvePoints' property.
--- Cause: java.lang.NullPointerException; nested exception is
com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in sqlmap/dbo_CURVE_SqlMap.xml.
--- The error occurred while applying a result map.
--- Check the dbo_CURVE.CurveBOResult.
--- Check the result mapping for the 'curvePoints' property.
--- Cause: java.lang.NullPointerException
com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in sqlmap/dbo_CURVE_SqlMap.xml.
--- The error occurred while applying a result map.
--- Check the dbo_CURVE.CurveBOResult.
--- Check the result mapping for the 'curvePoints' property.
--- Cause: 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:615)
   at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(
SqlMapExecutorDelegate.java:589)
   at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(
SqlMapSessionImpl.java:118)
   at
org.springframework.orm.ibatis.SqlMapClientTemplate$3.doInSqlMapClient(
SqlMapClientTemplate.java:231)
   at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(
SqlMapClientTemplate.java:168)
   at
org.springframework.orm.ibatis.SqlMapClientTemplate.executeWithListResult(
SqlMapClientTemplate.java:190)
   at org.springframework.orm.ibatis.SqlMapClientTemplate.queryForList(
SqlMapClientTemplate.java:229)
   at test.dao.CurveBODAOImpl.selectAll(CreditSpreadBODAOImpl.java:40)
   at testa.dao.TestCurveBODAOImpl.testSelectdAll(
TestCreditSpreadBODAOImpl.java:38)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(
NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(
DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at junit.framework.TestCase.runTest(TestCase.java:154)
   at junit.framework.TestCase.runBare(TestCase.java:127)
   at junit.framework.TestResult$1.protect(TestResult.java:106)
   at junit.framework.TestResult.runProtected(TestResult.java:124)
   at junit.framework.TestResult.run(TestResult.java:109)
   at junit.framework.TestCase.run(TestCase.java:118)
   at junit.framework.TestSuite.runTest(TestSuite.java:208)
   at junit.framework.TestSuite.run(TestSuite.java:203)
   at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(
JUnit3TestReference.java:128)
   at org.eclipse.jdt.internal.junit.runner.TestExecution.run(
TestExecution.java:38)
   at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(
RemoteTestRunner.java:460)
   at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(
RemoteTestRunner.java:673)
   at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(
RemoteTestRunner.java:386)
   at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(
RemoteTestRunner.java:196)
Caused by: java.lang.NullPointerException
   at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.endTransaction(
SqlMapExecutorDelegate.java:782)
   at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.endTransaction(
SqlMapSessionImpl.java:176)
   at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.endTransaction(
SqlMapClientImpl.java:154)
   at
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.autoEndTransaction(
SqlMapExecutorDelegate.java:883)
   at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(
SqlMapExecutorDelegate.java:622)
   at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(
SqlMapExecutorDelegate.java:589)
   at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(
SqlMapSessionImpl.java:118)
   at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(
SqlMapClientImpl.java:95)
   at com.ibatis.sqlmap.engine.mapping.result.loader.ResultLoader.getResult
(ResultLoader.java:72)
   at
com.ibatis.sqlmap.engine.mapping.result.loader.ResultLoader.loadResult(
ResultLoader.java:59)
   at
com.ibatis.sqlmap.engine.mapping.result.BasicResultMap.getNestedSelectMappingValue
(BasicResultMap.java:502)
   at com.ibatis.sqlmap.engine.mapping.result.BasicResultMap.getResults(
BasicResultMap.java:340)
   at com.ibatis.sqlmap.engine.execution.SqlExecutor.handleResults(
SqlExecutor.java:381)
   at com.ibatis.sqlmap.engine.execution.SqlExecutor.handleMultipleResults(
SqlExecutor.java:301)
   at com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQuery(
SqlExecutor.java:190)
   at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteQuery(
GeneralStatement.java:205)
   at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback
(GeneralStatement.java:173)
   ... 28 more


Have a feeling that I missed something simple :)

Cheers,
Mike

Reply via email to