ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mikael Andersson" <mail.mi...@gmail.com>
Subject Semi complex mapping question
Date Wed, 21 Mar 2007 09:20:36 GMT
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

Mime
View raw message