Sqlserver 2008 JDBC驅動有問題
用jtds1.2.7即可(jtds-1.2.7.jar)
http://wonengchuangzaoqij.blog.163.com/blog/static/3716743920131311254853/
java.lang.AbstractMethodError: com.microsoft.jdbc.base.BaseDatabaseMetaData.supportsGetGeneratedKeys()Z
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" java.lang.AbstractMethodError: com.microsoft.jdbc.base.BaseDatabaseMetaData.supportsGetGeneratedKeys()Z
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:123)
at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2119)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2115)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1339)
at dao.HibernateSessionFactory.<clinit>(HibernateSessionFactory.java:31)
at dao.BaseHibernateDAO.getSession(BaseHibernateDAO.java:13)
at HibernateDAOTest.main(HibernateDAOTest.java:16)
解決:microsoft提供的數據庫驅動存在bug。需要換一種驅動連接,使用jtds(下載地址:http://sourceforge.net/projects/jtds/files/)下載jtds1.2版,解壓得到jtds-1.2.jar,引用到eclipse中項目目錄下(去除原驅動引用),更改hibernate配置文件:
原驅動連接配置:
<property name="connection.driver_class">com.microsoft.jdbc.sqlserver.SQLServerDriver</property>
<property name="connection.url">jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=hibernate</property>
更改jtds連接:
<property name="connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>
<property name="connection.url">jdbc:jtds:sqlserver://127.0.0.1:1433;DatabaseName=hibernate</property>
問題得到解決。補充:java代碼調原驅動連接數據庫是沒有問題的,搭配hibernate會有此問題。
在連接mysql5.1時正常,連接sql2000時就是連不上,鬱悶,終於在網上找到了解答,原來是sql驅動和hibernate的兼容性問題,現問題已解決,留此文備查.