确定一个值是否可以用于 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);
如果存在这样的东西,是严格的还是转换的?
例如:
如果严格,varchar(2)
列将不接受 Integer
1
,但会接受 String
"1"
如果转换,varchar(2)
列将接受 Integer
1
此外,如果字段不能接受该值,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/
在 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);
如果存在这样的东西,是严格的还是转换的?
例如:
如果严格,
varchar(2)
列将不接受Integer
1
,但会接受String
"1"
如果转换,
varchar(2)
列将接受Integer
1
此外,如果字段不能接受该值,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/