在jOOQ中,有没有办法确定一个值是否可以用于Field/DataType?
例如:
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
,但会接受字符串
“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
实现添加到所有数据类型,并在将变量绑定(bind)到底层 JDBC 语句时实现验证。
有关数据类型绑定(bind)的更多信息,请参阅:
http://www.jooq.org/doc/latest/manual/sql-building/queryparts/custom-bindings/
关于java - 确定一个值是否可用于 jOOQ 中的 Field/DataType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32552278/