[hibernate-issues] [Hibernate-JIRA] Closed: (HHH-2986) Patch fixing HHH-2962 - "ResultCheckStyle.PARAM does not work with PostgreSQL"
Gail Badner (JIRA)
noreply at atlassian.com
Mon Dec 3 13:10:58 EST 2007
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-2986?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Gail Badner closed HHH-2986.
----------------------------
Assignee: Gail Badner
Resolution: Duplicate
> Patch fixing HHH-2962 - "ResultCheckStyle.PARAM does not work with PostgreSQL"
> ------------------------------------------------------------------------------
>
> Key: HHH-2986
> URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-2986
> Project: Hibernate3
> Issue Type: Patch
> Affects Versions: 3.2.5, 3.2.6, 3.3, 3.4
> Environment: Hibernate 3.2.5, PostgreSQL 8.2 & 8.3beta
> Reporter: Julius Stroffek
> Assignee: Gail Badner
> Attachments: hibernate.diff
>
> Original Estimate: 10 minutes
> Remaining Estimate: 10 minutes
>
> 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
> The patch fixes this issue by calling CallableStatement.getBigDecimal(parameterPosition).intValue() instead of CallableStatement.getInt(paramterPosition).
> 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.
> Hibernate should use CallableStatement.getBigDecimal(parameterIndex).intValue()
> to obtain a value of a output parameter of NUMERIC data type.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the hibernate-issues
mailing list