哪个API的优先级高于registerColumnType和registerHibernateType



我将这些API的用法作为读取

registerHibernate类型:用于定义默认的hibernate类型支持。

registerColumnType:用于为给定的类型代码注册类型以及最大列长度。换句话说,registerColumnTypedetaild定义sql类型。

所以,如果我在我的MSSQL方言中声明以下阶段

registerColumnType(Types.NCHAR,1, "nchar(1)");
registerColumnType(Types.NCHAR, "string");
registerHibernateType(Types.NCHAR,1, StandardBasicTypes.CHARACTER.getName());
registerHibernateType(Types.NCHAR, StandardBasicTypes.STRING.getName());

在MSSQL中,这些类型中哪一个优先级更高?

我的方言中也有类似的问题:

registerColumnType(Types.VARCHAR, "nvarchar(MAX)");
registerColumnType(Types.VARCHAR, 4000, "nvarchar($l)");

第一行表示默认映射,第二行定义"加权"映射的最大长度。过程如下:

  1. Hibernate尝试为您的类型查找所有加权映射
  2. 如果为您的类型找到任何加权映射,hibernate会尝试找到具有最大容量<=的映射size(在我的例子中是4000<=您列定义的大小)
  3. 如果找到与您的大小相对应的任何加权映射,则将大小替换为$l参数($l表示长度,$s表示小数位数,$p表示精度)
  4. 如果没有找到加权映射(没有该类型的加权注册Code或没有最大容量足以包含大小的加权)-返回默认映射(也尝试替换)

相关内容

  • 没有找到相关文章

最新更新