确定一个值是否可以用于 jOOQ 中的字段/数据类型

Determine if a value can be used for a Field / DataType in jOOQ

在 jOOQ 中,有什么方法可以确定一个值是否可以用于字段/数据类型?

例如:

Field f = <a non-nullable varchar(2)>;

assert f.accepts("");
assert f.accepts("a");
assert f.accepts("ab");

assert ! f.accepts("abc");
assert ! f.accepts(null);
assert ! f.accepts();

Field g = <a nullable unsigned byte>;

assert g.accepts(null);
assert g.accepts(0);
assert g.accepts(1);

assert ! g.accepts("");
assert ! g.accepts("a");
assert ! g.accepts(-1);
assert ! g.accepts(999999);

如果存在这样的东西,是严格的还是转换的?

例如:

此外,如果字段不能接受该值,UpdateSetStep#set(Field field, T value)(和类似方法)是否可能抛出异常? (出于任何原因,例如可空性、数据类型、长度、精度、小数位数等)

In jOOQ, is there any way to determine if a value can be used for a Field / DataType?

自 jOOQ 3.6 起不存在此类功能。现在有一个新的功能请求:#4543

Also, is it possible for UpdateSetStep#set(Field field, T value) (and similar methods) to throw an exception if the field cannot accept the value?

您将无法覆盖 set() 的行为。但是您可以将自己的数据类型 Binding 实现添加到所有数据类型,并在将变量绑定到基础 JDBC 语句时实现验证。

有关数据类型绑定的详细信息,请参阅:
http://www.jooq.org/doc/latest/manual/sql-building/queryparts/custom-bindings/