hibernate.cfg.xml配置如下:
<session-factory>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.username">scott</property>
<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
<property name="jndi.url">jdbc:oracle:thin:@127.1:1521:MASTER</property>
<property name="connection.datasource">java:comp/env/jdbc/Oracle</property>
<property name="connection.password">tiger</property>
<property name="show_sql">true</property>
<property name= "connection.pool_size">100</property>
<mapping resource="com/pojo/Dept.hbm.xml" />
<mapping resource="com/pojo/Emp.hbm.xml" /></session-factory>
运行后的异常:
%%%% Error Creating SessionFactory %%%%
org.hibernate.HibernateException: Could not find datasource
at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:56)
at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124)
at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:56)
at org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:366)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:60)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1881)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1174)
at com.test.HibernateSessionFactory.<clinit>(HibernateSessionFactory.java:31)
at com.test.Test.insertDept(Test.java:11)
at com.test.Test.main(Test.java:52)
Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.lookup(Unknown Source)
at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:52)
... 9 more
%%%% Error Creating SessionFactory %%%%
org.hibernate.MappingException: Could not read mappings from resource: com/pojo/Dept.hbm.xml
at org.hibernate.cfg.Configuration.addResource(Configuration.java:485)
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1465)
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1433)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1414)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1390)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1310)
at com.test.HibernateSessionFactory.rebuildSessionFactory(HibernateSessionFactory.java:69)
at com.test.HibernateSessionFactory.getSession(HibernateSessionFactory.java:53)
at com.test.Test.insertDept(Test.java:11)
at com.test.Test.main(Test.java:52)
Caused by: org.hibernate.DuplicateMappingException: Duplicate collection role mapping com.pojo.Dept.emp
at org.hibernate.cfg.Mappings.addCollection(Mappings.java:124)
at org.hibernate.cfg.HbmBinder.createClassProperties(HbmBinder.java:2030)
at org.hibernate.cfg.HbmBinder.createClassProperties(HbmBinder.java:2005)
at org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonValues(HbmBinder.java:368)
at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:282)
at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:153)
at org.hibernate.cfg.Configuration.add(Configuration.java:386)
at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:427)
at org.hibernate.cfg.Configuration.addResource(Configuration.java:482)
... 9 more
Exception in thread "main" java.lang.NullPointerException
at com.test.Test.insertDept(Test.java:12)
at com.test.Test.main(Test.java:52)

解决方案 »

  1.   

    com/pojo/Dept.hbm.xml 不存在或有错误
      

  2.   

    你没有配置数据源啊,datasource,sessionFactory需要引用数据源才能创建,所以异常
      

  3.   

    Could not find datasource  ~我觉得还是认真检查一下hibernate.cfg.xml中的配置信息吧
      

  4.   

    <session-factory>
            <property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
            <property name="connection.datasource">
             ....
            </property>
        
        </session-factory>
    配置下就ok了
      

  5.   

    <session-factory> 
    <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver </property> 
    <property name="connection.username">scott </property> 
    <property name="dialect">org.hibernate.dialect.Oracle9Dialect </property> 
    <property name="jndi.url">jdbc:oracle:thin:@127.1:1521:MASTER </property> 
    <property name="connection.datasource">java:comp/env/jdbc/Oracle </property> 
    <property name="connection.password">tiger </property> 
    <property name="show_sql">true </property> 
    <property name= "connection.pool_size">100 </property> 
    <mapping resource="com/pojo/Dept.hbm.xml" /> 
    <mapping resource="com/pojo/Emp.hbm.xml" /> 
    </session-factory> 
    改成这样试试看:
    <session-factory> 
    <property name="dialect">org.hibernate.dialect.Oracle9Dialect </property> 
    <property name="connection.datasource">java:comp/env/jdbc/Oracle</property>
    <mapping resource="com/pojo/Dept.hbm.xml" /> 
    <mapping resource="com/pojo/Emp.hbm.xml" /> 
    </session-factory> 
    前提是你正确配置了jdbc/Oracle
      

  6.   


    恩  的确是  你都已经配了个DATASOURCE还搞其它属性有什么用,或者把<property name="connection.datasource">java:comp/env/jdbc/Oracle </property> 去掉呵 LZ试一下吧!