IBatis2.3.4 throws : java.sql.SQLException: Invalid column type when property is not set in POJO while inserting data.

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

IBatis2.3.4 throws : java.sql.SQLException: Invalid column type when property is not set in POJO while inserting data.

rajnishp
Hi,
IBatis throws SQL exception while inserting data using InlineParameterMap :--

The error occurred while applying a parameter map.
--- Check the insertAllocationInstruction-InlineParameterMap.
--- Check the parameter mapping for the 'userID' property.
--- Cause: java.sql.SQLException: Invalid column type

Ibatis throws error because the attribute userID is not set while inserting data in database(Oracle 10g).
After doing googling I got help in http://ibatisnet.sourceforge.net/DevGuide.html
Solution provided :--
                      <statement id=”insertProduct” parameterClass=”product”>
                       insert into PRODUCT (PRD_ID, PRD_DESCRIPTION)
                      values (#id:NUMERIC:-999999#, #description:VARCHAR:NO_ENTRY#);
                      </statement>
Providing Default value if attribut not set.

This solution is not working.

Please provided correct solution solution (Only by IBatis not setting default value in POJO)

Thanking In Advance.




Reply | Threaded
Open this post in threaded view
|

Re: IBatis2.3.4 throws : java.sql.SQLException: Invalid column type when property is not set in POJO while inserting data.

Larry Meadors
Your code would be useful. The code from the dev guide...not so much. :)

Larry


On Mon, Feb 1, 2010 at 2:51 AM, rajnishp <[hidden email]> wrote:

>
> Hi,
> IBatis throws SQL exception while inserting data using InlineParameterMap
> :--
>
> The error occurred while applying a parameter map.
> --- Check the insertAllocationInstruction-InlineParameterMap.
> --- Check the parameter mapping for the 'userID' property.
> --- Cause: java.sql.SQLException: Invalid column type
>
> Ibatis throws error because the attribute userID is not set while inserting
> data in database(Oracle 10g).
> After doing googling I got help in
> http://ibatisnet.sourceforge.net/DevGuide.html
> Solution provided :--
>                      <statement id=”insertProduct”
> parameterClass=”product”>
>                       insert into PRODUCT (PRD_ID, PRD_DESCRIPTION)
>                      values (#id:NUMERIC:-999999#,
> #description:VARCHAR:NO_ENTRY#);
>                      </statement>
> Providing Default value if attribut not set.
>
> This solution is not working.
>
> Please provided correct solution solution (Only by IBatis not setting
> default value in POJO)
>
> Thanking In Advance.
>
>
>
>
>
> --
> View this message in context: http://old.nabble.com/IBatis2.3.4-throws-%3A-java.sql.SQLException%3A-Invalid-column-type-when-property-is-not-set-in-POJO-while-inserting-data.-tp27401733p27401733.html
> Sent from the iBATIS - Dev mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden email]
> For additional commands, e-mail: [hidden email]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: IBatis2.3.4 throws : java.sql.SQLException: Invalid column type when property is not set in POJO while inserting data.

Clinton Begin
In reply to this post by rajnishp
Using null value replacement like #id:NUMERIC:-999999# doesn't act like a default value.  In fact, it acts quite the opposite way.  It was originally implemented to allow nullable fields in the database to be mapped to primitive Java types (non-nullable).  Because it was so hard to understand, it's been removed in iBATIS 3.

So, that won't help you.

Based on your comment and without your code, it seems to me you're asking how to avoid a SQL exception when you don't pass in a parameter.  Unfortunately, you have to pass in every parameter that you specify.  You would get the same error with plain JDBC.

Clinton

On Mon, Feb 1, 2010 at 2:51 AM, rajnishp <[hidden email]> wrote:

Hi,
IBatis throws SQL exception while inserting data using InlineParameterMap
:--

The error occurred while applying a parameter map.
--- Check the insertAllocationInstruction-InlineParameterMap.
--- Check the parameter mapping for the 'userID' property.
--- Cause: java.sql.SQLException: Invalid column type

Ibatis throws error because the attribute userID is not set while inserting
data in database(Oracle 10g).
After doing googling I got help in
http://ibatisnet.sourceforge.net/DevGuide.html
Solution provided :--
                     <statement id=”insertProduct”
parameterClass=”product”>
                      insert into PRODUCT (PRD_ID, PRD_DESCRIPTION)
                     values (#id:NUMERIC:-999999#,
#description:VARCHAR:NO_ENTRY#);
                     </statement>
Providing Default value if attribut not set.

This solution is not working.

Please provided correct solution solution (Only by IBatis not setting
default value in POJO)

Thanking In Advance.





--
View this message in context: http://old.nabble.com/IBatis2.3.4-throws-%3A-java.sql.SQLException%3A-Invalid-column-type-when-property-is-not-set-in-POJO-while-inserting-data.-tp27401733p27401733.html
Sent from the iBATIS - Dev mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]


Reply | Threaded
Open this post in threaded view
|

Re: IBatis2.3.4 throws : java.sql.SQLException: Invalid column type when property is not set in POJO while inserting data.

rajnishp
Thanks Clinton,

Larry FYI my SqlMAp for insert is like
<insert id="insertAllocationInstruction" parameterClass="com.sungard.cliq.dto.AllocationDTO" >
                <selectKey resultClass="int" keyProperty="allocationID">
                        SELECT ALLOCATION_INSTRUCTION_SEQ.NextVal FROM DUAL
                </selectKey>
               
                INSERT INTO ALLOCATION_INSTRUCTION
                (
                ALLOCATION_INSTRUCTION_ID,
                CLEARING_BROKER,
                EXTERNAL_ACCOUNT_ID,
                ACCOUNT_NAME,
                ACCOUNT_ID,
                QUANTITY,
                PRICE,
                USER_LOGIN_NAME,
                USER_ID,
                ENTITY_ID,
                CREATED_BY
                )
                VALUES
                (
                #allocationID# ,
                #clearingBroker# ,
                #externalAccountID#,
                #accountName#,
                #accountID#,
                #quantity#,
                #price#,
                #userLoginName#,
                #userID:NUMBER#,
                #entityID#,
                #createdBy#
                )

here I have set Inline parameter for userID as NUMBER

But still it is throwing same exception, when we looked in issue we found it was working fine with primitives int ,long, double and String but it was throwing same exception with wrappers of Integer, Long, Double.
For our requirement POJO uses Wrappers attributes.

I also tried to resolve this issue by using parameterMap

<parameterMap id="insertAllocationInstructionParameterMap" class="com.sungard.cliq.dto.AllocationDTO">
<parameter property="allocationID" javaType="java.lang.Integer" jdbcType="NUMBER"/>
<parameter property="clearingBroker" javaType="java.lang.String"   jdbcType="VARCHAR2"/>
<parameter property="externalAccountID" javaType="java.lang.String"   jdbcType="VARCHAR2"/>
<parameter property="accountName" javaType="java.lang.String"  jdbcType="VARCHAR2"/>
<parameter property="accountID" javaType="java.lang.Long" jdbcType="NUMBER"/>
<parameter property="quantity" javaType="java.lang.Long" jdbcType="NUMBER"/>
<parameter property="price" javaType="java.math.BigDecimal" jdbcType="NUMBER"/>
<parameter property="userLoginName" javaType="java.lang.String"  jdbcType="VARCHAR2"/>
<parameter property="userID" javaType="java.lang.Integer" jdbcType="NUMBER"/>
<parameter property="entityID" javaType="java.lang.Long" jdbcType="NUMBER"/>
<parameter property="createdBy" javaType="java.lang.String"  jdbcType="VARCHAR2"/>
</parameterMap>
       
                       
<insert id="insertAllocationInstruction" parameterClass="com.sungard.cliq.dto.AllocationDTO" parameterMap="insertAllocationInstructionParameterMap">
                <selectKey resultClass="int" keyProperty="allocationID">
                        SELECT ALLOCATION_INSTRUCTION_SEQ.NextVal FROM DUAL
                </selectKey>
               
                INSERT INTO ALLOCATION_INSTRUCTION
                (
                ALLOCATION_INSTRUCTION_ID,
                CLEARING_BROKER,
                EXTERNAL_ACCOUNT_ID,
                ACCOUNT_NAME,
                ACCOUNT_ID,
                QUANTITY,
                PRICE,
                USER_LOGIN_NAME,
                USER_ID,
                ENTITY_ID,
                CREATED_BY
                )
                VALUES
                (
                #allocationID# ,
                #clearingBroker# ,
                #externalAccountID#,
                #accountName#,
                #accountID#,
                #quantity#,
                #price#,
                #userLoginName#,
                #userID#,
                #entityID#,
                #createdBy#
                )

But stiil it is giving

java.sql.BatchUpdateException: ORA-00911: invalid character


Clinton Begin wrote
Using null value replacement like #id:NUMERIC:-999999# doesn't act like a
default value.  In fact, it acts quite the opposite way.  It was originally
implemented to allow nullable fields in the database to be mapped to
primitive Java types (non-nullable).  Because it was so hard to understand,
it's been removed in iBATIS 3.

So, that won't help you.

Based on your comment and without your code, it seems to me you're asking
how to avoid a SQL exception when you don't pass in a parameter.
Unfortunately, you have to pass in every parameter that you specify.  You
would get the same error with plain JDBC.

Clinton

On Mon, Feb 1, 2010 at 2:51 AM, rajnishp <hi_rajnish@yahoo.com> wrote:

>
> Hi,
> IBatis throws SQL exception while inserting data using InlineParameterMap
> :--
>
> The error occurred while applying a parameter map.
> --- Check the insertAllocationInstruction-InlineParameterMap.
> --- Check the parameter mapping for the 'userID' property.
> --- Cause: java.sql.SQLException: Invalid column type
>
> Ibatis throws error because the attribute userID is not set while inserting
> data in database(Oracle 10g).
> After doing googling I got help in
> http://ibatisnet.sourceforge.net/DevGuide.html
> Solution provided :--
>                      <statement id=”insertProduct”
> parameterClass=”product”>
>                       insert into PRODUCT (PRD_ID, PRD_DESCRIPTION)
>                      values (#id:NUMERIC:-999999#,
> #description:VARCHAR:NO_ENTRY#);
>                      </statement>
> Providing Default value if attribut not set.
>
> This solution is not working.
>
> Please provided correct solution solution (Only by IBatis not setting
> default value in POJO)
>
> Thanking In Advance.
>
>
>
>
>
> --
> View this message in context:
> http://old.nabble.com/IBatis2.3.4-throws-%3A-java.sql.SQLException%3A-Invalid-column-type-when-property-is-not-set-in-POJO-while-inserting-data.-tp27401733p27401733.html
> Sent from the iBATIS - Dev mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@ibatis.apache.org
> For additional commands, e-mail: dev-help@ibatis.apache.org
>
>
Reply | Threaded
Open this post in threaded view
|

Re: IBatis2.3.4 throws : java.sql.SQLException: Invalid column type when property is not set in POJO while inserting data.

Jeff Butler-2
VARCHAR2 and NUMBER are not valid JDBC types.  These are Oracle
specific.  You need to specify the correct JDBC equivalent.  See here
for the valid values:

http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Types.html

Also, if you use a declared parameter map, then you must change the
parameter markers to question marks.

Jeff Butler


On Tue, Feb 2, 2010 at 2:03 AM, rajnishp <[hidden email]> wrote:

>
> Thanks Clinton,
>
> Larry FYI my SqlMAp for insert is like
> <insert id="insertAllocationInstruction"
> parameterClass="com.sungard.cliq.dto.AllocationDTO" >
>                <selectKey resultClass="int" keyProperty="allocationID">
>                        SELECT ALLOCATION_INSTRUCTION_SEQ.NextVal FROM DUAL
>                </selectKey>
>
>                INSERT INTO ALLOCATION_INSTRUCTION
>                (
>                ALLOCATION_INSTRUCTION_ID,
>                CLEARING_BROKER,
>                EXTERNAL_ACCOUNT_ID,
>                ACCOUNT_NAME,
>                ACCOUNT_ID,
>                QUANTITY,
>                PRICE,
>                USER_LOGIN_NAME,
>                USER_ID,
>                ENTITY_ID,
>                CREATED_BY
>                )
>                VALUES
>                (
>                #allocationID# ,
>                #clearingBroker# ,
>                #externalAccountID#,
>                #accountName#,
>                #accountID#,
>                #quantity#,
>                #price#,
>                #userLoginName#,
>                #userID:NUMBER#,
>                #entityID#,
>                #createdBy#
>                )
>
> here I have set Inline parameter for userID as NUMBER
>
> But still it is throwing same exception, when we looked in issue we found it
> was working fine with primitives int ,long, double and String but it was
> throwing same exception with wrappers of Integer, Long, Double.
> For our requirement POJO uses Wrappers attributes.
>
> I also tried to resolve this issue by using parameterMap
>
> <parameterMap id="insertAllocationInstructionParameterMap"
> class="com.sungard.cliq.dto.AllocationDTO">
> <parameter property="allocationID"              javaType="java.lang.Integer"
> jdbcType="NUMBER"/>
> <parameter property="clearingBroker"    javaType="java.lang.String"
> jdbcType="VARCHAR2"/>
> <parameter property="externalAccountID" javaType="java.lang.String"
> jdbcType="VARCHAR2"/>
> <parameter property="accountName"               javaType="java.lang.String"
> jdbcType="VARCHAR2"/>
> <parameter property="accountID"                 javaType="java.lang.Long"
> jdbcType="NUMBER"/>
> <parameter property="quantity"          javaType="java.lang.Long"
> jdbcType="NUMBER"/>
> <parameter property="price"             javaType="java.math.BigDecimal"
> jdbcType="NUMBER"/>
> <parameter property="userLoginName"     javaType="java.lang.String"
> jdbcType="VARCHAR2"/>
> <parameter property="userID"            javaType="java.lang.Integer"
> jdbcType="NUMBER"/>
> <parameter property="entityID"          javaType="java.lang.Long"
> jdbcType="NUMBER"/>
> <parameter property="createdBy"                 javaType="java.lang.String"
> jdbcType="VARCHAR2"/>
> </parameterMap>
>
>
> <insert id="insertAllocationInstruction"
> parameterClass="com.sungard.cliq.dto.AllocationDTO"
> parameterMap="insertAllocationInstructionParameterMap">
>                <selectKey resultClass="int" keyProperty="allocationID">
>                        SELECT ALLOCATION_INSTRUCTION_SEQ.NextVal FROM DUAL
>                </selectKey>
>
>                INSERT INTO ALLOCATION_INSTRUCTION
>                (
>                ALLOCATION_INSTRUCTION_ID,
>                CLEARING_BROKER,
>                EXTERNAL_ACCOUNT_ID,
>                ACCOUNT_NAME,
>                ACCOUNT_ID,
>                QUANTITY,
>                PRICE,
>                USER_LOGIN_NAME,
>                USER_ID,
>                ENTITY_ID,
>                CREATED_BY
>                )
>                VALUES
>                (
>                #allocationID# ,
>                #clearingBroker# ,
>                #externalAccountID#,
>                #accountName#,
>                #accountID#,
>                #quantity#,
>                #price#,
>                #userLoginName#,
>                #userID#,
>                #entityID#,
>                #createdBy#
>                )
>
> But stiil it is giving
>
> java.sql.BatchUpdateException: ORA-00911: invalid character
>
>
>
> Clinton Begin wrote:
>>
>> Using null value replacement like #id:NUMERIC:-999999# doesn't act like a
>> default value.  In fact, it acts quite the opposite way.  It was
>> originally
>> implemented to allow nullable fields in the database to be mapped to
>> primitive Java types (non-nullable).  Because it was so hard to
>> understand,
>> it's been removed in iBATIS 3.
>>
>> So, that won't help you.
>>
>> Based on your comment and without your code, it seems to me you're asking
>> how to avoid a SQL exception when you don't pass in a parameter.
>> Unfortunately, you have to pass in every parameter that you specify.  You
>> would get the same error with plain JDBC.
>>
>> Clinton
>>
>> On Mon, Feb 1, 2010 at 2:51 AM, rajnishp <[hidden email]> wrote:
>>
>>>
>>> Hi,
>>> IBatis throws SQL exception while inserting data using InlineParameterMap
>>> :--
>>>
>>> The error occurred while applying a parameter map.
>>> --- Check the insertAllocationInstruction-InlineParameterMap.
>>> --- Check the parameter mapping for the 'userID' property.
>>> --- Cause: java.sql.SQLException: Invalid column type
>>>
>>> Ibatis throws error because the attribute userID is not set while
>>> inserting
>>> data in database(Oracle 10g).
>>> After doing googling I got help in
>>> http://ibatisnet.sourceforge.net/DevGuide.html
>>> Solution provided :--
>>>                      <statement id=”insertProduct”
>>> parameterClass=”product”>
>>>                       insert into PRODUCT (PRD_ID, PRD_DESCRIPTION)
>>>                      values (#id:NUMERIC:-999999#,
>>> #description:VARCHAR:NO_ENTRY#);
>>>                      </statement>
>>> Providing Default value if attribut not set.
>>>
>>> This solution is not working.
>>>
>>> Please provided correct solution solution (Only by IBatis not setting
>>> default value in POJO)
>>>
>>> Thanking In Advance.
>>>
>>>
>>>
>>>
>>>
>>> --
>>> View this message in context:
>>> http://old.nabble.com/IBatis2.3.4-throws-%3A-java.sql.SQLException%3A-Invalid-column-type-when-property-is-not-set-in-POJO-while-inserting-data.-tp27401733p27401733.html
>>> Sent from the iBATIS - Dev mailing list archive at Nabble.com.
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [hidden email]
>>> For additional commands, e-mail: [hidden email]
>>>
>>>
>>
>>
>
> --
> View this message in context: http://old.nabble.com/IBatis2.3.4-throws-%3A-java.sql.SQLException%3A-Invalid-column-type-when-property-is-not-set-in-POJO-while-inserting-data.-tp27401733p27416662.html
> Sent from the iBATIS - Dev mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden email]
> For additional commands, e-mail: [hidden email]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]