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