求教Hibernate连接Sybase的问题
我单独用JDBC连接可以
ConnectSybase.java如下:
import com.sybase.jdbc3.jdbc.SybDriver;
import java.sql.*;
import java.io.*;
import java.util.*;
public class ConnectSybase{
public static void main(String[] args){
System.out.println("Java连接Sybase数据库示例!");
try{
Class.forName("com.sybase.jdbc3.jdbc.SybDriver").newInstance();
String url ="jdbc:sybase:Tds:192.26.26.21:7100/xxx?charset=eucgb&jconnect_version=6";
Properties sysProps = System.getProperties();
sysProps.put("user","user");
sysProps.put("password","password");
Connection conn= DriverManager.getConnection(url,sysProps);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from users";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()){
System.out.println(rs.getString("username"));
}
rs.close();
conn.close();
}
catch(Exception e){
System.out.println(e.getMessage());
}
}
}
换到Hibernate里却不行
hibernate.cfg.xml如下:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name = "connection.driver_class">
com.sybase.jdbc3.jdbc.SybDriver
</property>
<property name = "connection.url">
jdbc:sybase:Tds:192.26.26.21:7100/xxx?jconnect_version=6
</property>
<property name = "connection.user">user</property>
<property name = "connection.password">password</property>
<property name="connection.pool_size">1</property>
<property name = "dialect">org.hibernate.dialect.SybaseDialect</property>
<!-- 如果换成MySQL是可以的,这里是MySQL的配置
<property name = "connection.driver_class">com.mysql.jdbc.Driver</property>
<property name = "connection.url">
jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8
</property>
<property name = "connection.user">user</property>
<property name = "connection.password">password</property>
<property name="connection.pool_size">1</property>
<property name = "dialect">org.hibernate.dialect.MySQLDialect</property>
-->
<property name="current_session_context_class">thread</property>
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<property name = "show_sql">true</property>
<property name="hbm2ddl.auto">create</property>
<mapping resource = "tests/User.hbm.xml" />
</session-factory>
</hibernate-configuration>
运行提示错误如下:
Exception in thread "main" org.hibernate.exception.GenericJDBCException: Cannot open connection
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:91)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:79)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:318)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:109)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:137)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1262)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:292)
at $Proxy0.beginTransaction(Unknown Source)
at tests.Test.AddUser(Test.java:34)
at tests.Test.main(Test.java:18)
Caused by: java.sql.SQLException: JZ0SJ: 没有在此数据库中发现元数据存取器信息。 请按 jConnect 文档中所述安装 所需的表。
at com.sybase.jdbc3.jdbc.ErrorMessage.raiseError(Unknown Source)
at com.sybase.jdbc3.jdbc.MdaManager.getMetaDataAccessor(Unknown Source)
at com.sybase.jdbc3.jdbc.MdaManager.getMetaDataAccessor(Unknown Source)
at com.sybase.jdbc3.jdbc.MdaManager.getMetaDataAccessor(Unknown Source)
at com.sybase.jdbc3.tds.Tds.getBoolOption(Unknown Source)
at com.sybase.jdbc3.jdbc.SybConnection.getAutoCommit(Unknown Source)
at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:112)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:315)
... 12 more
望高手指教!
问题点数:5、回复次数:0Top




