在JOOQ中使用有符号整数

时间:2015-06-18 09:37:40

标签: java jooq

我在JOOQ中查询时遇到问题。如何在jooq中使用有符号整数类型,因为它不允许将其强制转换为UIntegers。我用同样的方法得到了错误。

public List<Movies> getMovie(int movid) {
    return dsl.select().from(MOVIES).where(MOVIES.MOVIE_ID.equal(movid)).limit(1).fetch().into(Movies.class);
}

1 个答案:

答案 0 :(得分:6)

我怀疑您的MOVIE_ID列在MySQL数据库中的类型为INTEGER UNSIGNED。这就是为什么jOOQ的代码生成器为它生成Field<UInteger>的原因。您有三种选择:

1。继续使用无符号整数

您必须将movid变量转换为UInteger

MOVIES.MOVIE_ID.equal(UInteger.valueOf(movid))

......或:

MOVIES.MOVIE_ID.equal(MOVIES.MOVIE_ID.getDataType().convert(movid))

2。在jOOQ中停止使用无符号整数

您可以指示jOOQ代码生成器不生成无符号整数。

<!-- Generate jOOU data types for your unsigned data types, which are
     not natively supported in Java.
     Defaults to true -->
<unsignedTypes>false</unsignedTypes>

或者,您也可以在代码生成器配置中使用<forcedTypes/>来强制执行单个列的无符号类型。

For details, see the relevant section in the manual

3。停止在数据库中使用无符号整数

另一种选择是停止在数据库中使用UNSIGNED数据类型,如果您更喜欢使用签名类型。