自动建表后,某列插入中文,在oracle中显示长度不够,width的处理,能够根据数据库类型进行相应处理吗?
3 回复
public String evalFieldType(MappingField mf) {
if (mf.getCustomDbType() != null)
return mf.getCustomDbType();
switch (mf.getColumnType()) {
case BOOLEAN:
if (mf.hasDefaultValue())
return "char(1) DEFAULT '"+getDefaultValue(mf)+"' check (" + mf.getColumnNameInSql() + " in(0,1))";
return "char(1) check (" + mf.getColumnNameInSql() + " in(0,1))";
case TEXT:
return "CLOB";
case VARCHAR:
return "VARCHAR2(" + mf.getWidth() + ")";
case INT:
// 用户自定义了宽度
if (mf.getWidth() > 0)
return "NUMBER(" + mf.getWidth() + ")";
// 用数据库的默认宽度
return "NUMBER";
case FLOAT:
// 用户自定义了精度
if (mf.getWidth() > 0 && mf.getPrecision() > 0) {
return "NUMBER(" + mf.getWidth() + "," + mf.getPrecision() + ")";
}
// 用默认精度
if (mf.getTypeMirror().isDouble())
return "NUMBER(15,10)";
return "NUMBER";
case TIME:
case DATETIME:
case DATE:
return "DATE";
default:
return super.evalFieldType(mf);
}
}
看了下OracleJdbcExpert源码,匹配VARCHAR的时候拼接的是 VARCHAR2(),能继承OracleJdbcExpert,将该方法重写改成 NVARCHAR2(),
但把nutz_jdbc_experts.js复制过来,放到 ioc/下 ,好像没有被引用 @兽总
添加回复
请先登陆