Hi Sascha,

Thanks for your report. This might be an issue with the combination of
<dateAsTimestamp/> and your own custom binding, which we should resolve on
our side. I've created an issue for this:
https://github.com/jOOQ/jOOQ/issues/3806

Are you still using <dateAsTimestamp/> ?

The way it works:

- dateAsTimestamp has been retrofitted to produce
a org.jooq.impl.DateAsTimestampBinding on the column, plus it still
rewrites the type from SQLDataType.DATE to SQLDataType.TIMESTAMP.
- org.jooq.impl.DateAsTimestampBinding contains the fix for the performance
issue that we're discussing here
- you can combine converters and bindings, such that Binding<T, X> and
Converter<X, U> convert between
  o <T> (the database type, java.sql.Timestamp in this case),
  o <X> (an intermediate type, again java.sql.Timestamp in this case),
  o <U> (the user type, JodaDateTime in this case)

In any case, the issue here is that either because you have deactivated
<dateAsTimestamp/>, or because of #3806, your SQLDataType.DATE is no longer
rewritten to SQLDataType.TIMESTAMP. When initialising the
Field<JodaDateTime>, <T> is bound to java.sql.Date, while your binding
expects <T> to be bound to java.sql.Timestamp.

I see two options:

1. Leave everything in the code generation configuration as it was, it
should work with <dateAsTimestamp/> and your custom converter
2. Write two different bindings, one for <T> = java.sql.Date and one for
<T> = java.sql.Timestamp. Both implementations can be the same, using only
java.sql.Timestamp internally when interacting with JDBC. In fact, you
should then probably delegate both implementations to
org.jooq.impl.DateAsTimestampBinding

Let me know if this helps, or if there is still some confusion around this
feature. I'm aware that it is not immediately intuitive...

Lukas

2014-11-25 19:45 GMT+01:00 Sascha Herrmann <[email protected]>:

> Hi!
>
> Downloaded 3.5. But I am running into problems with my binding.
>
> As I said, we're using Joda's DateTime as Java object class for DATE and
> TIMESTAMP. In 3.4 we used a simple converter (<Timestamp, DateTime>) for
> that, combined with setting "<dateAsTimestamp>true</dateAsTimestamp>" in
> the xml.
>
> Now I tried to do the same with a binding which uses the old converter:
>
> public class DateTimeBinding
>>       implements Binding<Timestamp, DateTime> {
>> ....
>>   /** The converter. */
>>   private DateTimeConverter converter = new DateTimeConverter( );
>>
>>   /**
>>    * @see org.jooq.Binding<java.sql.Timestamp,
>> org.joda.time.DateTime>#converter()
>>    */
>>   @Override
>>   public Converter<Timestamp, DateTime> converter( ) {
>>     return converter;
>>   }
>> .....
>
>
> Then in my settings:
>
>        <customTypes>
>>         <customType>
>>           <name>JodaDateTime</name>
>>           <type>org.joda.time.DateTime</type>
>>
>> <binding>com.ge.med.medora.fiber.dbaccess.DateTimeBinding</binding>
>>         </customType>
>>       </customTypes>
>> ....
>>         <forcedType>
>>           <name>JodaDateTime</name>
>>           <types>DATE|TIMESTAMP.*</types>
>>         </forcedType>
>
>
>
> During compilation I run into errors. The generator generated something
> like:
>
>
> public final
>> org.jooq.TableField<.....tables.records.PatientRegistrationRecord,
>> org.joda.time.DateTime> PTRG_ARRIVAL_DATE =
>> createField("PTRG_ARRIVAL_DATE",
>> org.jooq.impl.SQLDataType.DATE.nullable(false), this, "", new
>> ..........DateTimeBinding());
>
>
> which doesn't compile.
>
> Previously the converter created:
>
> public final
>> org.jooq.TableField<.....tables.records.PatientRegistrationRecord,
>> org.joda.time.DateTime> PTRG_ARRIVAL_DATE =
>> createField("PTRG_ARRIVAL_DATE", org.jooq.impl.SQLDataType.TIMESTAMP, this,
>> "", new .....DateTimeConverter());
>
>
> which did compile.
>
> Can you spot what's going wrong?
>
> Thanks,
>
> Sascha
>
> --
> You received this message because you are subscribed to the Google Groups
> "jOOQ User Group" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups "jOOQ 
User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to