在JOOQ的where子句中使用自定义字段转换器

时间:2014-03-24 19:15:14

标签: java mysql sql orm jooq

我尝试使用以下语法从JOOQ中的哪个位置进行选择:

public final org.jooq.TableField<MyType, java.lang.String> DATE = createField("date", org.jooq.impl.SQLDataType.VARCHAR.length(8), this);
Cursor<MyRecord> cursor =
            create.selectFrom(MYTABLE)
            .where( MYTABLE.DATE_STRING_COLUMN.greaterOrEqual( ??? ) )
            .fetchLazy();

代码生成器知道此列,但将其视为String。 MyType是MyRecord的类型。

我遇到的问题是数据库存储了我需要转换为java.sql.date的数据的字符串。 我想在where子句中调用自定义转换器来转换本机Date类型,这是一个字符串,如&#34; 2014-03-24&#34;到java.sql.Date。 这不起作用的原因是String和Java.sql.Date之间没有类型转换,所以你得到类型不匹配。

问题在于我似乎找不到合适的类型来放入条件(我有三个问号)。 我有一个自定义字段转换器,它实现了带有记录并返回java.sql.Date对象的convert()方法,但我似乎无法获得正确的类型。我现在使用原始SQL字符串来解决它,它看起来像这样:str_to_date(date, '%m-%d-%y') >= now() 有没有人可以在where子句中调用自定义字段转换器?

0 个答案:

没有答案