I'm aware that hibernate recently redid its type system in 3.6. I think this now allows you do associate a java Class with a Type (or UserType). For example I use joda-time and have a couple of UserTypes that map the LocalDate and LocalDateTime into appropriate SQL types.
This works fine when working with objects but if I want to pass a joda type as a HQL parameter hibernate gets confused so I have to remember to supply the Type each time I make a call.
query.setParameter( "now", new LocalDateTime(), Hibernate.custom( LocalDateTimeType.class ) );
I think it is now possible during the Configuration/SessionFactory setup phase to say LocalDateTime -> LocalDatetimeType but I'm not sure how to do this. I found the TypeResolver but had trouble deciphering which method I should be calling to achieve this.
Or please correct me if this is not possible even with the new type stuff in 3.6.
Answering my own question.
Simple enough when you know how.
configuration.getTypeResolver().registerTypeOverride( LocalDateTimeType.TYPE, new String[]{ LocalDateTime.class.getName() } );
configuration.getTypeResolver().registerTypeOverride( LocalDateType.TYPE, new String[]{ LocalDate.class.getName() } );
The TypeResolver lookups for unknown types use the class name so registering the full name of the class as the registrationKey does the job.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With