奇怪的hibernate问题。

sargeguo 04-07-30

本人在做一个数据库移植的项目中,发现了一个很奇怪的hibernate问题。提出来希望各位有兴趣的朋友指点一下。这个项目就是在w2k下把原先sql server 2000中的所有数据(包括主键生成规则、作业等等),全部转到sybase(版本12.5)中去,用hibernate进行数据库的映射。奇怪的问题就出现在这里,在xml文件里,数据库里表里面的字段类型分别是“int”、“varchar”、“numeric”、“datetime”等等,对应为java里面的类型则全部为string,而hibernate向数据库提交数据的时候都是先把string转为char型,然后再写入数据库。当用hibernate向sql server 2000里提交数据的时候,hibernat把所有的string型转为char型,然后再根据sql数据库表里不同的字段类型,自动用convert转换后拼一条sql语句,这样就一点问题都没有。可是很奇怪的是,当hibernate向sybase写入数据的时候,居然就没有了自动转换的功能,也就是说hibernate把string转成char后没有再根据sybase中表里面的不同类型字段再转换一次。于是程序文件在以sybase为数据库是就出现了很多“char不允许转换为int、char不允许转换为numeric”这样的问题了。除非是hibernate不支持的数据库,否则hibernate的功能应该是一样的,不可能说对这个数据库有这个功能,对另一个数据库就没有了,请教有过这方面经验或者知道症状所在的朋友指点指点

areszeng
2004-07-30 10:37

如果是干迁移数据库的结构这种事情,最后不要用hibernate这种工具 他的强项不是做这种事情的.你可以用powerdesigner他做这种事情,既方便 而且肯定这方面的功能也比hibernate强大多了

有问题 给邮件给我
areszeng@sohu.com

sargeguo
2004-07-30 10:57

楼上的朋友谢谢你的指点,是我的问题没有表述清楚,我不是把hibernate用在数据移植上的。hibernate是我在程序中用来和数据库进行交互的,原来用是sql server,后来因为某种原因要求改用sybase,于是就把sql server的所有数据通过dts导到sybase中,以sql server为数据库时,所有的程序正常,改用sybase后,再用hibernate进行交互就出现我在上面所说的那些问题。

banq
2004-07-30 12:02

>hibernate向sybase写入数据的时候,居然就没有了自动转换的功能
这应该是驱动包的问题,或者Hibernate与JDBC接口问题