Yeah, you can't set an int to null.

int x = null; // <- this won't compile

You need to either use a wrapped type (Integer) or 'magic value' (like
0) to handle null.

I'd suggest changing the type to Integer instead of int.

Larry


On 11/2/07, Thorsten Elfert <[EMAIL PROTECTED]> wrote:
>
> thanks for the hint. I have done the changes as suggested
>
> <select id="getXYZ"
>          parameterClass="int" resultMap="xyz-result" >
>          <![CDATA[
>                  select * from XYZ
>                  where id = #id#
>          ]]>
>  </select>
>
> and I added the Java type information in the resultmap section:
>
>                 <result property="repurchaseFeeId" column="REPURCHASE_FEE_ID" 
> jdbcType="NUMERIC"/>
>
>
> However, it still get the same error:
>
> Caused by: java.lang.RuntimeException: Error setting property 
> 'setRepurchaseFeeId' of 'XYZ ( [EMAIL PROTECTED]  ....  repurchaseFeeId = 0   
>   ..... )'.  Cause: java.lang.IllegalArgumentException
>
> Any ideas?
>
>
>
>
>  "Nathan Maves" <[EMAIL PROTECTED]>
>
> 01.11.2007 17:54
>
> Please respond to
>  [email protected]
>
>
> To [email protected]
>
> cc
>
>
> Subject Re: Error setting property in case of a null value - How to map 
> correctly ?
>
>
>
>
>
>
>
>
> Not sure if this will correct your issue but you should only use a resultMap 
> OR a resultClass not both.
>
>  Nathan
>
> On Nov 1, 2007 10:11 AM, Thorsten Elfert < [EMAIL PROTECTED]> wrote:
>
>  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.
>
>
>  --
>
>  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