2011-04-04 30 views
0

我有一些使用hibernate的繼承代碼。我收到以下錯誤:hibernate Annotation Config找不到我的xml文件

Caused by: org.hibernate.HibernateException: C:\dev\wk\rs.110-AQU-120.cca.cca-ui\main\config\hibernate\DEV\master.cfg.xml not found 
    at org.hibernate.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:147) 
    at org.hibernate.cfg.Configuration.getConfigurationInputStream(Configuration.java:1402) 
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1424) 
    at com.cca.persistence.HibernateUtil$Parameters.<init>(HibernateUtil.java:96) 
    at com.cca.persistence.HibernateUtil.<clinit>(HibernateUtil.java:137) 
    ... 4 more 

調用AnnotationConfiguration()#configure(String configurationFile)時會出現這種情況;
但該文件確實存在。爲什麼冬眠不能找到它?

回答

1

您的資源的路徑不能是絕對路徑(C:\dev\wk\rs.110-AQU-120.cca...),它必須是應用程序中的相對路徑,如包名稱!

原因是,那org.hibernate.util.ConfigHelper.getResourceAsStream加載了ClassLoader.getResourceAsStream(<resourceName>)

欲瞭解更多詳情,請看ClassLoader.getResourceAsStreamClassLoader.getResource

+0

我沒意識到目錄必須是在課程路徑中設置。 – richs 2011-04-04 18:57:34

1

如果你想在自定義位置配置文件,你可以投AnnotationConfigurationConfiguration,並提供File作爲參數,例如:

((Configuration) cfg).configure(new File(System.getProperty("user.dir") + "/config/hibernate.cfg.xml")); 
相關問題