以前都是使用oracle或者mysql数据库,采用jdbc连接去整合Hibernate3,今天在项目使用sql server2000数据库,同样也采用jdbc去连接数据库整合Hibernate3,却出现如下错误:
java.lang.AbstractMethodError:com.microsoft.jdbc.base.BaseDatabaseMetaData.supportsGetGeneratedKeys()Z
或者
java.lang.AbstractMethodError: com.microsoft.jdbc.base.BaseDatabaseMetaData.getJDBCMajorVersion()I
经过翻阅各种资料,才发现这本身就是microsoft提供的SqlServer数据库驱动存在bug,改bug是整合hibernate才会出现的,使用java的jdbc直接连接是没有问题的。
查看了以前项目才发现,可以使用另外一种方式去连接数据库,也就是jtds驱动连接,好像这也是唯一一种解决方式,目前还没有发现其他的解决方法,去网上下载jtds-1.2.jar,放入到项目的lib包中。连接方式做如下修改:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver"></property> <property name="url" value="jdbc:jtds:sqlserver://localhost:1433/Material"></property> <property name="username" value="sa"></property> <property name="password" value="123"></property> <!-- 事务自动提交 --> <property name="defaultAutoCommit" value="true"></property> </bean>
经过测试上面的连接方式是没有问题的。
附件是驱动,下载后把zip改为jar后缀。。