Hi,

I am new on iBatis and I try to map an Oracle 9i based result and get the 
following error:

Caused by: java.lang.RuntimeException: Error setting property 
'setRepurchaseFeeId' of XYZ ( [EMAIL PROTECTED]    repurchaseFeeId = 0 
targetGroupId = 0    offerFeeId = 0    offerId = null    transferToDo = 
FALSE    salesInfoId = 0    minimumQuota = 0    validFrom = null 
quotaIsPublic = FALSE    ovwAdditionalInfo = null     )'.  Cause: 
java.lang.IllegalArgumentException
        at 
com.ibatis.sqlmap.engine.accessplan.PropertyAccessPlan.setProperties(
PropertyAccessPlan.java:52)
        at com.ibatis.sqlmap.engine.exchange.JavaBeanDataExchange.setData(
JavaBeanDataExchange.java:115)
        at 
com.ibatis.sqlmap.engine.mapping.result.BasicResultMap.setResultObjectValues(
BasicResultMap.java:373)
        at 
com.ibatis.sqlmap.engine.mapping.statement.RowHandlerCallback.handleResultObject(
RowHandlerCallback.java:64)
        at com.ibatis.sqlmap.engine.execution.SqlExecutor.handleResults(
SqlExecutor.java:376)
        at 
com.ibatis.sqlmap.engine.execution.SqlExecutor.handleMultipleResults(
SqlExecutor.java:295)
        at com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQuery(
SqlExecutor.java:186)
        at 
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteQuery(
GeneralStatement.java:205)
        at 
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(
GeneralStatement.java:173)
        ... 38 more
Caused by: java.lang.IllegalArgumentException
        at 
com.ibatis.sqlmap.engine.accessplan.PropertyAccessPlan.setProperties(
PropertyAccessPlan.java:46)

It is based on the following select…

<select id="getXYZ"
        resultClass="XYZ"
        parameterClass="int" resultMap="xyz-result">
        <![CDATA[
                select * from XYZ
                where id = #id# 
        ]]>
</select>

..and the following result map definition:

<resultMap class="XYZ"
        id="xyz-result">
        <result property="repurchaseFeeId" column="REPURCHASE_FEE_ID" />
        <result property="pretaxYieldCalculation"
                column="PRETAX_YIELD_CALCULATION" />
…
</resultMap>


…an XML gets succesfully generated via:

<select id="getSecurityOfferInfoByIdAsXml" resultClass="xml"
        parameterClass="int" xmlResultName="securityOfferInfo-dummy">

        <![CDATA[
                select * from XYZ
                where id = #id# 
        ]]>
</select>

Here is the result:

<?xml version="1.0" encoding="UTF-8"?>
<xzy>
        <SECURITY_ID>88888888</SECURITY_ID>
        <TARGET_GROUP_ID>1</TARGET_GROUP_ID>
        <OFFER_ID>O1</OFFER_ID>
        <REPURCHASE_ID>R9</REPURCHASE_ID>
        <TRANSFER_TO_DO>FALSE</TRANSFER_TO_DO>
        <QUOTA_IS_PUBLIC>FALSE</QUOTA_IS_PUBLIC>
        <USE_GENERATED_TEXT>FALSE</USE_GENERATED_TEXT>
        <YIELD_CALCULATION>FALSE</YIELD_CALCULATION>
        <PRETAX_YIELD_CALCULATION>FALSE</PRETAX_YIELD_CALCULATION>
        <VALID_FROM>2007-11-01 11:06:23.0</VALID_FROM>
</xyz>

All the null values are not part of the xml. As expected!

However, the java class cannot be instantiated (as you can see in the 
exception above)

For testing purposes I changed the entries in the result map like that:

        <result property="repurchaseFeeId" column="REPURCHASE_FEE_ID" 
nullValue=”0”/>


This works! But this workaround is not acceptable. I do not want to get 
some value instantiated if it is null in the corresponding database 
attribute. 
The property should simply not being set!

Could somebody help me on that?


Thanks in advance!!

-- 

Informationen (einschließlich Pflichtangaben) zu einzelnen, innerhalb der EU 
tätigen Gesellschaften und Zweigniederlassungen des Konzerns Deutsche Bank 
finden Sie unter http://www.db.com/de/content/pflichtangaben.htm. Diese E-Mail 
enthält vertrauliche und/ oder rechtlich geschützte Informationen. Wenn Sie 
nicht der richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben, 
informieren Sie bitte sofort den Absender und vernichten Sie diese E-Mail. Das 
unerlaubte Kopieren sowie die unbefugte Weitergabe dieser E-Mail ist nicht 
gestattet.

Please refer to http://www.db.com/en/content/eu_disclosures.htm for information 
(including mandatory corporate particulars) on selected Deutsche Bank branches 
and group companies registered or incorporated in the European Union. This 
e-mail may contain confidential and/or privileged information. If you are not 
the intended recipient (or have received this e-mail in error) please notify 
the sender immediately and delete this e-mail. Any unauthorized copying, 
disclosure or distribution of the material in this e-mail is strictly forbidden.

Reply via email to