在JOOQ中使用有符号整数

Rav*_*ana 2 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);
}
Run Code Online (Sandbox Code Playgroud)

Luk*_*der 6

我怀疑你的MOVIE_ID列是INTEGER UNSIGNEDMySQL数据库中的类型.这就是为什么jOOQ的代码生成器Field<UInteger>为它生成了一个.你有三个选择:

1.继续使用无符号整数

您必须将movid变量转换为UInteger:

MOVIES.MOVIE_ID.equal(UInteger.valueOf(movid))
Run Code Online (Sandbox Code Playgroud)

... 要么:

MOVIES.MOVIE_ID.equal(MOVIES.MOVIE_ID.getDataType().convert(movid))
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

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

有关详细信息,请参阅手册中的相关部分

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

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