java - 确定一个值是否可用于 jOOQ 中的 Field/DataType

标签 java sql jooq

在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/

相关文章:

java - 在 Servlet 中获取真实的客户端 IP

java - Dockerized Spring Boot 无法在 Raspberry Hyperiot OS + Gitlab CI + Spring Boot 上运行

c# - 您能否确认 NHibernate 术语中的术语 'Save' 代表 INSERT?

java - jOOQ 转换器和类型

sql - jOOQ "EXTRACT(EPOCH FROM [field])"解决方法?

java网络服务wsdl : Getting data out of a responce variable

Java - 将数组值乘以另一个数组

php - 计算表中的行位置

sql - 在 SQL Server 中组合 ORDER BY 和 UNION

postgresql - 在 jooq 中使用 postgres currval()