[hibernate-dev] StoredProcedureQuery parameters

Steve Ebersole steve at hibernate.org
Thu Sep 19 07:50:15 EDT 2013

StoredProcedureQuery spq = ...;
spq.registerStoredProcedureParameter( 1, Calendar.class, ParameterMode.IN );
spq.setParameter( 1, aGregorianCalendar, TemporalType.DATE );

We have some failures against the TCK for this scenario.  There are 2 
ways to solve this, and I wanted to get opinions on the options.

The first approach would be to convert the incoming Calendar to a Date.  
That is pretty easy and straightforward.

A second approach would be to have our TimestampType, DateType, TimeType 
classes accept the Calendar.  There could be a real win here in that 
this approach would let TimestampType, DateType, TimeType use the form 
of methods on Statement that accept the Timestamp, Date, Time *plus* a 
Calendar (for TZ information).  So today, for Timestamp e.g., we call:

statement.setTimestamp( 1, theTimestamp )

but there is also the form:

statement.setTimestamp( 1, theTimestamp, theCalendar )

Of course passing the timezone (via the Calendar) may not be what the 
user wants :)  Probably "safer" going with the first option, just wanted 
to throw out the second one to see what y'all thought.

More information about the hibernate-dev mailing list