Well that's what I thought I was doing. My field in my bean is
private List<Double> values;
with setter:
public void setValues(List<Double> values) {
this.values = values;
}
Does my mapping somehow not match this?
On 9/11/07, Niels Beekman <[EMAIL PROTECTED]> wrote:
>
> This seems to be a bug, iBATIS tries to cast a double array to an Object
> array. A workaround would probably be to change the double array to a Double
> list.
>
>
>
> Niels
> ------------------------------
>
> *From:* Jonathan Alvarsson [mailto:[EMAIL PROTECTED]
> *Sent:* dinsdag 11 september 2007 11:36
> *To:* [email protected]
> *Subject:* How to map a list of double?
>
>
>
> I am trying to map a list of doubles in my bean but I keep getting a
> ClassCastException on it.
>
> <resultMap class="MoleculeDescriptor" id="MoleculeDescriptor">
> <result property="id" column="id" />
> <result property="name" column="name" />
> <result property="values" column="id" select="
> MoleculeDescriptor.getValueList" />
> </resultMap>
>
> <select id="MoleculeDescriptor.getValueList " resultClass="List"
> parameterClass="String">
> SELECT
> value AS value
> FROM
> DescriptorValue
> WHERE
> abstractDescriptor=#value#
> ORDER BY
> arrayPos
> </select>
>
> CREATE TABLE DescriptorValue (
> id BIGINT AUTO_INCREMENT NOT NULL,
> value DOUBLE NOT NULL,
> arrayPos INT NOT NULL,
> abstractDescriptor VARCHAR(36) NOT NULL,
>
> PRIMARY KEY (id),
> FOREIGN KEY (abstractDescriptor) REFERENCES AbstractDescriptor(id)
> ) ENGINE=InnoDB;
>
> How can I do this?
>
> Oh and the exception I get:
>
> org.springframework.jdbc.UncategorizedSQLException: SqlMapClient
> operation; uncategorized SQLException for SQL []; SQL state [null]; error
> code [0];
> --- The error occurred in mapping/MoleculeDescriptor.xml.
> --- The error occurred while applying a result map.
> --- Check the MoleculeDescriptor.
> --- Check the result mapping for the 'values' property.
> --- Cause: java.lang.ClassCastException: [D; nested exception is
> com.ibatis.common.jdbc.exception.NestedSQLException:
> --- The error occurred in mapping/MoleculeDescriptor.xml.
> --- The error occurred while applying a result map.
> --- Check the MoleculeDescriptor.
> --- Check the result mapping for the 'values' property.
> --- Cause: java.lang.ClassCastException: [D
> Caused by: com.ibatis.common.jdbc.exception.NestedSQLException :
> --- The error occurred in mapping/MoleculeDescriptor.xml.
> --- The error occurred while applying a result map.
> --- Check the MoleculeDescriptor.
> --- Check the result mapping for the 'values' property.
> --- Cause: java.lang.ClassCastException: [D
> at
> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback
> (GeneralStatement.java:188)
> at
> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForObject(
> GeneralStatement.java:104)
> at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject
> (SqlMapExecutorDelegate.java:566)
> at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject
> (SqlMapExecutorDelegate.java :541)
> at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForObject(
> SqlMapSessionImpl.java:106)
> at
> org.springframework.orm.ibatis.SqlMapClientTemplate$1.doInSqlMapClient(
> SqlMapClientTemplate.java:243)
> at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(
> SqlMapClientTemplate.java:193)
> at org.springframework.orm.ibatis.SqlMapClientTemplate.queryForObject(
> SqlMapClientTemplate.java:241)
> at net.bioclipse.pcm.dao.GenericDao.getById (GenericDao.java:45)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at
> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(
> AopUtils.java:296)
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(
> ReflectiveMethodInvocation.java:177)
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
> ReflectiveMethodInvocation.java:144)
> at net.bioclipse.pcm.dao.FetchIntroductionInterceptor.invoke (
> FetchIntroductionInterceptor.java:22)
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
> ReflectiveMethodInvocation.java:166)
> at org.springframework.aop.framework.JdkDynamicAopProxy.invoke (
> JdkDynamicAopProxy.java:204)
> at $Proxy0.getById(Unknown Source)
> at net.bioclipse.pcm.dao.GenericDaoTest.testGetById(
> GenericDaoTest.java:69)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at junit.framework.TestCase.runTest (TestCase.java:168)
> at junit.framework.TestCase.runBare(TestCase.java:134)
> at org.springframework.test.ConditionalTestCase.runBare(
> ConditionalTestCase.java:69)
> at
> org.springframework.test.annotation.AbstractAnnotationAwareTransactionalTests.access$001(
> AbstractAnnotationAwareTransactionalTests.java:47)
> at
> org.springframework.test.annotation.AbstractAnnotationAwareTransactionalTests$1.run
> (AbstractAnnotationAwareTransactionalTests.java:115)
> at
> org.springframework.test.annotation.AbstractAnnotationAwareTransactionalTests.runTest(
> AbstractAnnotationAwareTransactionalTests.java:180)
> at
> org.springframework.test.annotation.AbstractAnnotationAwareTransactionalTests.runTestTimed
> (AbstractAnnotationAwareTransactionalTests.java:153)
> at
> org.springframework.test.annotation.AbstractAnnotationAwareTransactionalTests.runBare(
> AbstractAnnotationAwareTransactionalTests.java:111)
> at junit.framework.TestResult$1.protect(TestResult.java:110)
> at junit.framework.TestResult.runProtected(TestResult.java:128)
> at junit.framework.TestResult.run (TestResult.java:113)
> at junit.framework.TestCase.run(TestCase.java:124)
> at junit.framework.TestSuite.runTest(TestSuite.java:232)
> at junit.framework.TestSuite.run(TestSuite.java:227)
> at
> org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run (
> JUnit3TestReference.java:130)
> 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.ClassCastException: [D
> at
> com.ibatis.sqlmap.engine.mapping.result.loader.ResultLoader.listToArray(
> ResultLoader.java:85)
> at
> com.ibatis.sqlmap.engine.mapping.result.loader.ResultLoader.getResult (
> ResultLoader.java:75)
> 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)
> ... 44 more
>
>
>
> --
> // Jonathan
>
--
// Jonathan