You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-java@ibatis.apache.org by Jun Yang <jy...@gmail.com> on 2010/01/15 20:17:21 UTC

auto type conversion in iBATIS 3?

Hi all,

I have started to use iBATIS 3 and am loving it!  Thanks!

I have a question regarding how to do automatic type conversion.
 In iBATIS 2,  if I have "select * from bug where id = #id:NUMERIC#", if the
value of id is a string, it's converted to an int automatically.

In iBATIS 3, I have yet to find the equivalent.  I tried "select * from bug
where id = #{id,javaType=int,jdbcType=NUMERIC}" and got a class cast
exception.  So the right type is expected.

I also tried "select * from bug where id = numeric(#{id})" and got "Cause:
org.apache.ibatis.type.TypeException: JDBC requires that the JdbcType must
be specified for all nullable parameters."

How can I easily configure to have that string value converted automatically
to an integer?

Thanks a lot!

Jun

Re: auto type conversion in iBATIS 3?

Posted by Clinton Begin <cl...@gmail.com>.
No version of iBATIS has ever actively converted types.  If it worked in
iBATIS 2, it was strictly by luck.  It was never a feature though.

You shouldn't need to specify the JDBC type in the example you give though,
because it's not nullable (that query would be invalid with a null value).
You would only get that error if you actually pass a null into the query.

Because Java is strongly typed, iBATIS embraces that, while hopefully
striking a balance of simplicity and avoids duplicate type definition where
possible.

Clinton

On Fri, Jan 15, 2010 at 12:17 PM, Jun Yang <jy...@gmail.com> wrote:

> Hi all,
>
> I have started to use iBATIS 3 and am loving it!  Thanks!
>
> I have a question regarding how to do automatic type conversion.
>  In iBATIS 2,  if I have "select * from bug where id = #id:NUMERIC#", if the
> value of id is a string, it's converted to an int automatically.
>
> In iBATIS 3, I have yet to find the equivalent.  I tried "select * from bug
> where id = #{id,javaType=int,jdbcType=NUMERIC}" and got a class cast
> exception.  So the right type is expected.
>
> I also tried "select * from bug where id = numeric(#{id})" and got "Cause:
> org.apache.ibatis.type.TypeException: JDBC requires that the JdbcType must
> be specified for all nullable parameters."
>
> How can I easily configure to have that string value converted
> automatically to an integer?
>
> Thanks a lot!
>
> Jun
>