java - JDBC 中 hibernate 异常

标签 java database oracle hibernate jdbc

我正在 eclipse 中运行 hibernate 程序并尝试连接数据库。我添加了所有必需的 jar。但它抛出了

异常org.hibernate.exception.GenericJDBCException

这是我的代码:

Employee.java

public class Employee {  
private int id;  
private String firstName,lastName;  

public int getId() {  
    return id;  
}  
public void setId(int id) {  
    this.id = id;  
}  
public String getFirstName() {  
    return firstName;  
}  
public void setFirstName(String firstName) {  
    this.firstName = firstName;  
}  
public String getLastName() {  
    return lastName;  
}  
public void setLastName(String lastName) {  
    this.lastName = lastName;  
}  


}  

Employee.hbm.xml

<?xml version='1.0' encoding='UTF-8'?>  
<!DOCTYPE hibernate-mapping PUBLIC  
 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  

 <hibernate-mapping>  
  <class name="com.acnovate.Employee" table="emp1000">  
    <id name="id">  
     <generator class="assigned"></generator>  
    </id>  

    <property name="firstName" column="firstname"></property>  
    <property name="lastName" column="lastname"></property>  

  </class>  

 </hibernate-mapping>  

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="hbm2ddl.auto">update</property>  
        <property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>  
        <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>  
        <property name="hibernate.connection.username">system</property>  
        <property name="hibernate.connection.password">Manager7</property>  
        <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>  
    <mapping resource="Employee.hbm.xml"/>  
    </session-factory>  

</hibernate-configuration> 

StoreData.java

import org.hibernate.Session;  
import org.hibernate.SessionFactory;  
import org.hibernate.Transaction;  
import org.hibernate.cfg.Configuration;  

public class StoreData {  
public static void main(String[] args) {  

    //creating configuration object  
    Configuration cfg=new Configuration();  
    cfg.configure("hibernate.cfg.xml");//populates the data of the configuration file  

    //creating session factory object  
    SessionFactory factory=cfg.buildSessionFactory();  

    //creating session object  
    Session session=factory.openSession();  

    //creating transaction object  
    Transaction t=session.beginTransaction();  

    Employee e1=new Employee();  
    e1.setId(115);  
    e1.setFirstName("sonoo");  
    e1.setLastName("jaiswal");  

    session.persist(e1);//persisting the object  

    t.commit();//transaction is committed  
    session.close();  

    System.out.println("successfully saved");  

}  
}  

我面临以下异常。

Exception in thread "main" org.hibernate.exception.GenericJDBCException: Cannot open connection
    at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
    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:420)
    at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
    at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:119)
    at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57)
    at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1326)
    at com.acnovate.StoreData.main(StoreData.java:22)
Caused by: java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
The Connection descriptor used by the client was:
localhost:1521:orcl

    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:261)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110)
    at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:417)
    ... 5 more

我检查了我的代码,但没有发现任何问题。请帮助我摆脱这个错误。

提前致谢。

最佳答案

您需要检查一下

jdbc:oracle:thin:@localhost:1521:orcl

Oracle 无法识别 orcl SID。

关于java - JDBC 中 hibernate 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47053691/

相关文章:

oracle - 是否可以在存储过程中使用 "return"?

java - 通过使用 eclipse 运行 .sh 文件来调试应用程序

java - 一行代码我看不懂

sql-server - TSQL 转换 CRM 2011 中的 ChangeData 字段

Django 更新枚举表的行

sql - 来自 CLOB 的 Oracle REGEXP_SUBSTR

java - 嵌入式 GraphDatabaseServer 中的 Neo4j 属性解析错误

java - 使用pig将数据存储到Hbase中

sql - 加载到 Hive 表中仅将整个数据导入第一列

Oracle唯一约束和唯一索引