|
Sadly I don't have a time for creating some test case but I Iooked on https://github.com/hibernate/hibernate-orm/blob/master/hibernate-entitymanager/src/main/java/org/hibernate/jpa/internal/QueryImpl.java (I suppose there is current version), and it looks like the bug is still there:
There is no section for handling value==null {{ public void bindValue(T value, TemporalType specifiedTemporalType) { validateBinding( getParameterType(), value, specifiedTemporalType );
if ( Date.class.isInstance( value ) ) { if ( name != null ) { if ( specifiedTemporalType == DATE ) { nativeQuery.setDate( name, (Date) value ); }
else if ( specifiedTemporalType == TIME ) { nativeQuery.setTime( name, (Date) value ); }
else if ( specifiedTemporalType == TIMESTAMP ) { nativeQuery.setTimestamp( name, (Date) value ); }
} else { if ( specifiedTemporalType == DATE ) { nativeQuery.setDate( position - 1, (Date) value ); }
else if ( specifiedTemporalType == TIME ) { nativeQuery.setTime( position - 1, (Date) value ); }
else if ( specifiedTemporalType == TIMESTAMP ) { nativeQuery.setTimestamp( position - 1, (Date) value ); }
} } else if ( Calendar.class.isInstance( value ) ) { if ( name != null ) { if ( specifiedTemporalType == DATE ) { nativeQuery.setCalendarDate( name, (Calendar) value ); }
else if ( specifiedTemporalType == TIME ) { throw new IllegalArgumentException( "not yet implemented" ); } else if ( specifiedTemporalType == TIMESTAMP ) { nativeQuery.setCalendar( name, (Calendar) value ); } } else { if ( specifiedTemporalType == DATE ) { nativeQuery.setCalendarDate( position - 1, (Calendar) value ); } else if ( specifiedTemporalType == TIME ) { throw new IllegalArgumentException( "not yet implemented" ); }
else if ( specifiedTemporalType == TIMESTAMP ) { nativeQuery.setCalendar( position - 1, (Calendar) value ); }
} } else { throw new IllegalArgumentException( "Unexpected type [" + value + "] passed with TemporalType; expecting Date or Calendar" ); }
}}
|