According to the Javadocs of field(String, Class, QueryPart...), you
should only supply QueryPart objects to the plain SQL field:
http://www.jooq.org/javadoc/latest/org/jooq/impl/Factory.html#field(java.lang.String,
java.lang.Class, org.jooq.QueryPart...)

If you pass a org.jooq.DatePart object, the compiler will infer this
method, instead:
http://www.jooq.org/javadoc/latest/org/jooq/impl/Factory.html#field(java.lang.String,
java.lang.Class, java.lang.Object...)

Where Object... is an array of bind values. You have several options,
for instance:
- Factory.field("trunc({0}, day)", ...);
- Factory.field("trunc({0}, {1}", ..., Factory.inline("day"));

Or, again, you can create a CustomField to correctly handle
dialect-specific behaviour of the TRUNC function:
http://www.jooq.org/doc/2.6/manual/sql-building/queryparts/custom-queryparts/

Cheers
Lukas

2012/11/23 Ben Hood <[email protected]>:
> Following this example, if I attempt the following:
>
> Field<Date> day = Factory.field("trunc({0}, {1})", SQLDataType.DATE,
> THINGS.ENTRY_DATE, DatePart.DAY);
>
> I get the following exception:
>
> org.jooq.exception.SQLDialectNotSupportedException: Type class
> org.jooq.DatePart is not supported in dialect null
> at org.jooq.impl.AbstractDataType.getDataType(AbstractDataType.java:478)
> at org.jooq.impl.FieldTypeHelper.getDataType(FieldTypeHelper.java:972)
> at org.jooq.impl.Factory.getDataType(Factory.java:6245)
> at org.jooq.impl.Util.queryParts(Util.java:533)
> at org.jooq.impl.SQLField.<init>(SQLField.java:59)
> at org.jooq.impl.Factory.field(Factory.java:1291)
>
> I also tried this with Factory instance method, i.e.
>
> Factory db = new Factory(ds, SQLDialect.HSQLDB);
> Field<Date> day = db.field("trunc({0}, {1})", SQLDataType.DATE,
> THINGS.ENTRY_DATE, DatePart.DAY);
>
> and I got the same error.
>
> Is there a better way to supply the dialect?
>
> On Fri, Nov 23, 2012 at 12:20 PM, Lukas Eder <[email protected]> wrote:
>>
>> Factory.field("trunc({0}, {1})", SQLDataType.TIMESTAMP, date, datepart);
>
>

Reply via email to