我在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)
我怀疑你的MOVIE_ID列是INTEGER UNSIGNEDMySQL数据库中的类型.这就是为什么jOOQ的代码生成器Field<UInteger>为它生成了一个.你有三个选择:
您必须将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)
您可以指示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/>在代码生成器配置中使用为单个列强制执行无符号类型.
UNSIGNED如果您更喜欢使用签名类型,另一种选择是停止在数据库中使用数据类型.