在 JOOQ 中使用有符号整数

Using signed integers in JOOQ

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

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

我怀疑您的 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 数据类型,当然,如果您更喜欢使用签名类型。