OJDBC的工作之一是将Oracle数据类型映射到Java类型.
但是,我们注意到,如果我们提供CHAR数据类型,则不会映射到java.lang.String.显示此行为的版本是:OJDBC7 v12.1.0.2和OJDBC6 v12.1.0.1.旧版本确实将CHAR数据类型映射到:java.lang.String.
在深入挖掘时,我们发现有一个类:StructMetaData在oracle.jdbc.driverOJDBC 的包中实现Oracle数据类型到Java类型映射.其中有一个方法:'getColumnClassName(int arg0)'值得关注.我们注意到,对于OJDBC v7,映射到的案例java.lang.String如下:
int arg1 = this.getColumnType(arg0);
switch (arg1) {
case -104:
return "oracle.sql.INTERVALDS";
case -103:
return "oracle.sql.INTERVALYM";
case -102:
return "oracle.sql.TIMESTAMPLTZ";
case -101:
return "oracle.sql.TIMESTAMPTZ";
case -15:
case -9:
case 12:
return "java.lang.String";
...
Run Code Online (Sandbox Code Playgroud)
但是,在较旧的OJDBC实现中,它看起来像这样:
int arg1 = this.getColumnType(arg0);
switch (arg1) {
case -104:
return "oracle.sql.INTERVALDS";
case -103:
return "oracle.sql.INTERVALYM";
case -102:
return "oracle.sql.TIMESTAMPLTZ";
case -101: …Run Code Online (Sandbox Code Playgroud)