Giving up for the night, but want to leave this here to make sure I'm thinking about this whole thing correctly.
I was under the impression that a converter is for when you come across a certain type of column data type and you want to change it to a java object. Example... a table in my postgres db has columns of type timestamp. So I would declare timestamp in the types tag. This makes it so whenever I run a jooq query and one of the columns is of type timestamp, it will automatically trigger the converter class I have defined for that type and run the proper overridden method that tells how to convert it to my target result, ZonedDateTime. You're saying it should be bigint over timestamp though... so am I completely wrong on all of this? Thanks. On Nov 18, 2016 5:12 AM, <[email protected]> wrote: > Really? That confuses me because the actual column the date is stored in > is timestamp, not bigint. I tried changing types to "bigint" and I get > this. Not really sure what it means. > > [ERROR] COMPILATION ERROR : > [INFO] ------------------------------------------------------------- > [ERROR] /jooq/Sequences.java:[31,34] type argument java.time.ZonedDateTime > is not within bounds of type-variable T > [ERROR] /jooq/Sequences.java:[31,87] type argument java.time.ZonedDateTime > is not within bounds of type-variable T > [ERROR] /jooq/Sequences.java:[31,180] incompatible types: > org.jooq.DataType<java.lang.Long> cannot be converted to > org.jooq.DataType<java.time.ZonedDateTime> > [INFO] 3 errors > > > On Friday, November 18, 2016 at 5:03:42 AM UTC-5, Lukas Eder wrote: >> >> The problem is probably here: >> >> >> <forcedType> >> <userType>java.time.ZonedDateTime</userType> >> <converter>com.foo.domain.util.ZonedDateTimeConverter</converter> >> <expression>.*</expression> >> <types>TIMESTAMP</types> >> </forcedType> >> >> You're applying this converter to TIMESTAMP columns, but the column of >> interest is really a BIGINT (java.lang.Long)... >> >> 2016-11-18 10:55 GMT+01:00 <[email protected]>: >> >>> Hi, thanks for the response! >>> >>> I had tried making a converter but it isn't working. I still get the >>> same error. Might you have any idea what I'm doing wrong? Is there >>> something specific I have to do to get it to trigger? I did a maven build >>> again to regenerate the sources. Do I need to change the query somehow or >>> is there something else I'm missing or have done wrong? Thanks for any >>> input. >>> >>> *My pom.xml:* >>> >>> <generator> >>> <database> >>> <name>org.jooq.util.postgres.PostgresDatabase</name> >>> <includes>.*</includes> >>> <excludes /> >>> <inputSchema>public</inputSchema> >>> <forcedTypes> >>> <forcedType> >>> <userType>java.time.ZonedDateTime</userType> >>> <converter>com.foo.domain.util.ZonedDateTimeConverter</converter> >>> <expression>.*</expression> >>> <types>TIMESTAMP</types> >>> </forcedType> >>> </forcedTypes> >>> </database> >>> <target> >>> <packageName>com.foo.jooq</packageName> >>> <directory>target/generated-sources</directory> >>> </target> >>> </generator> >>> >>> >>> *My ZonedDateTimeConverter.java converter implementation:* >>> >>> public class ZonedDateTimeConverter implements Converter<Long, >>> ZonedDateTime> { >>> >>> @Override >>> public ZonedDateTime from(Long aLong) { >>> Instant instant = Instant.ofEpochSecond(aLong); >>> ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(instant, >>> ZoneId.systemDefault()); >>> >>> return zonedDateTime; >>> } >>> >>> @Override >>> public Long to(ZonedDateTime zonedDateTime) { >>> return zonedDateTime.toEpochSecond(); >>> } >>> >>> @Override >>> public Class<Long> fromType() { >>> return Long.class; >>> } >>> >>> @Override >>> public Class<ZonedDateTime> toType() { >>> return ZonedDateTime.class; >>> } >>> } >>> >>> >>> On Friday, November 18, 2016 at 4:21:12 AM UTC-5, Patryk Najda wrote: >>>> >>>> Hi, >>>> >>>> it seems like you're missing a converter which would convert from the >>>> type which is stored in your DB (from it's value (1479365948726)I >>>> guess it's a TIMESTAMP) >>>> to a type which is used in your POJO (ZonedDateTime). >>>> >>>> Please have a look at this article regarding Converters: >>>> http://www.jooq.org/doc/2.6/manual/sql-execution >>>> /fetching/data-type-conversion/ >>>> >>>> Let me know if this helped you. >>>> >>>> >>>> >>>> W dniu piątek, 18 listopada 2016 09:53:58 UTC+1 użytkownik >>>> [email protected] napisał: >>>>> >>>>> Hi, >>>>> >>>>> I'm trying to run a simple select like so: >>>>> >>>>> List<Foo> foos = create.select() >>>>> .from(FOO) >>>>> .limit(pageable.getPageSize()) >>>>> .offset(pageable.getOffset()) >>>>> .fetchInto(Foo.class); >>>>> >>>>> >>>>> >>>>> I'm getting this error: >>>>> >>>>> >>>>> org.jooq.exception.MappingException: An error ocurred when mapping record >>>>> to class Foo >>>>> at >>>>> org.jooq.impl.DefaultRecordMapper$MutablePOJOMapper.map(DefaultRecordMapper.java:658) >>>>> >>>>> ... >>>>> >>>>> Caused by: org.jooq.exception.DataTypeException: Cannot convert from >>>>> 1479365948726 (class java.lang.Long) to class java.time.ZonedDateTime >>>>> at org.jooq.tools.Convert$ConvertAll.fail(Convert.java:1118) >>>>> at org.jooq.tools.Convert$ConvertAll.toDate(Convert.java:1070) >>>>> at org.jooq.tools.Convert$ConvertAll.from(Convert.java:789) >>>>> at org.jooq.tools.Convert.convert0(Convert.java:316) >>>>> at org.jooq.tools.Convert.convert(Convert.java:308) >>>>> at org.jooq.tools.Convert.convert(Convert.java:380) >>>>> at org.jooq.impl.AbstractRecord.get(AbstractRecord.java:243) >>>>> at >>>>> org.jooq.impl.DefaultRecordMapper$MutablePOJOMapper.map(DefaultRecordMapper.java:694) >>>>> at >>>>> org.jooq.impl.DefaultRecordMapper$MutablePOJOMapper.map(DefaultRecordMapper.java:614) >>>>> >>>>> >>>>> I'm using jooq 3.8.6 with a postgresql database. Does anyone have any >>>>> ideas why? My Foo.java entity does have some ZonedDateTime fields. I'm >>>>> guessing jooq doesn't support these? If that's the case, which date/time >>>>> type should I be using? >>>>> >>>> -- >>> 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.
