ibatis-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rajnishp <hi_rajn...@yahoo.com>
Subject Re: IBatis2.3.4 throws : java.sql.SQLException: Invalid column type when property is not set in POJO while inserting data.
Date Tue, 02 Feb 2010 08:03:37 GMT

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
>>
>>
> 
> 

-- 
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: dev-unsubscribe@ibatis.apache.org
For additional commands, e-mail: dev-help@ibatis.apache.org


Mime
View raw message