有时候在对象-关系映射文件中要对持久化类中的一些字段进行转型,利用type属性将字段映射成Hibernate中的类型,但是如果在持久化中本身就是一个String类型,再到对象-关系映射文件中用type属性声明在Hibernate类型中为String类型,那么在Hibernate初始化的时候会出现一个异常:像下面这样
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
说在指定的String类型的列上不能确定类型,
这是由于在一个String类型的字段上指定type属性为String而此发的,但是在用hbm2java或者hbm2ddl生成Java源文件或数据库Schema的时候却不会出错,这是在Hibernate3.2中出现的一个问题,用工具hbm2java的时候同样要在Hibernate初始化的时候加载对象-关系映射文件,却不出错,在运行的时候加载对象-关系映射文件就报出异常,其实这不是Hibernate本身的问题,在用工具hbm2java的时候用到的hibernate3.jar文件和运行的时候用到的hibernate3.jar是不同的两个jar文件,可以想到在这两个文件中解析XML的方式和验证机制并不相同,
要避免在运行的时候出现这个问题,可以在对象-关系映射文件中去掉type属性,就没有问题了
再开始是这样认为的,后来再仔细看书才知道在Hibernate的映射类型里面String对应的是string,而不是String,呵呵, 有时候一点不仔细会报出一大堆的异常,所以还是小心为好