[hibernate-dev] ResultCheckStyle.PARAM does not work with PostgreSQL

Julius Stroffek Julius.Stroffek at Sun.COM
Wed Nov 28 11:35:31 EST 2007


Sorry, I sent this mail only to Max, so resending it to the list. 
Please, review the patch. Thanks.

Max Rydahl Andersen wrote:
> patches should go to the jira.
Thanks Max, I have created an issue *HHH-2962
<http://opensource.atlassian.com/projects/hibernate/browse/HHH-2962> *in
jira and I have attached a patch. Should I somehow mark that there is a
patch pending for review?
> what do you mean by backport ?
I meant porting to 3.2 branch. Usually, patches are applied against head
by default in projects I am familiar with. I am not quite sure how
things work for hibernate.

Thanks

Cheers

Julo

>
> /max
>
>> Hi All,
>>
>> I have created a simple test application which uses a stored procedure
>> to insert a record into a database using hibernate. I used hibernate
>> annotations and have overridden insert statement by
>>
>> @SQLInsert(callable=true, sql="{? = call insert_party(?, ?, ?, ?)}",
>> check=ResultCheckStyle.PARAM)
>>
>> However, hibernate throws the exception
>> ...
>> Caused by: org.hibernate.exception.GenericJDBCException: could not
>> extract row counts from CallableStatement
>>         at
>> org.hibernate.jdbc.Expectations$BasicParamExpectation.determineRowCount(Expectations.java:123) 
>>
>>         at
>> org.hibernate.jdbc.Expectations$BasicExpectation.verifyOutcome(Expectations.java:41) 
>>
>>         at
>> org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2251) 
>>
>>         at
>> org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2661) 
>>
>>         at
>> org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:56) 
>>
>>         at 
>> org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250)
>>         at
>> org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:234)
>>         at
>> org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:141)
>>         at
>> org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298) 
>>
>>         at
>> org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27) 
>>
>>         at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
>>         at 
>> org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
>>         at
>> org.hibernate.ejb.AbstractEntityManagerImpl$1.beforeCompletion(AbstractEntityManagerImpl.java:516) 
>>
>>         ... 50 more
>> Caused by: org.postgresql.util.PSQLException: Parameter of type
>> java.sql.Types=2 was registered, but call to getInt
>> (sqltype=java.sql.Types=4) was made.
>>         at
>> org.postgresql.jdbc2.AbstractJdbc2Statement.checkIndex(AbstractJdbc2Statement.java:2387) 
>>
>>         at
>> org.postgresql.jdbc2.AbstractJdbc2Statement.getInt(AbstractJdbc2Statement.java:1920) 
>>
>>         at
>> org.hibernate.jdbc.Expectations$BasicParamExpectation.determineRowCount(Expectations.java:119) 
>>
>>         ... 62 more
>>
>> I studied JDBC3 specification whether PostgreSQL driver is wrong
>> or not and I think that the driver is correct. There is a conversion 
>> table
>> on page B-182 which should correspond to ResultSet object getter
>> methods only. There is nothing about the conversion being done
>> in CallableStatement's getter methods.
>>
>> Attached is the patch agains hibernate core Branch_3_2 which fixes the
>> issue using
>> getBigDecimal(parameterPosition).intValue()
>>
>> Please, could someone review the fix and apply the patch? Could you also
>> back port the fix? Thank you.
>>
>> Regards
>>
>> Julius Stroffek
>
>
>




More information about the hibernate-dev mailing list