2009-07-28 125 views
0

我正在將我的數據庫從PostgreSQL改爲Oracle 11g。我在Java和Struts中使用hibernate 3.0。oracle 11g休眠問題

一切工作正常與PostgreSQL。

我在hibernate.cfg.xml文件中更改了以下內容。

<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property> 
    <property name="hibernate.connection.password">mypassword</property> 
    <property name="hibernate.connection.url">jdbc:Oracle:thin:@192.168.1.1:1521/mydb</property> 
    <property name="hibernate.connection.username">my_user</property> 
    <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property> 

其他與Postgresql中的相同。

我使用ojdbc5.jar

現在,當我跑我的網頁它給了我下面的錯誤。

ORA-00903:無效的表名

任何一個可以幫助我關於這件事?

謝謝。

回答

3

這兩種情況最有可能的一個:

  1. 您正在連接的不是表的所有者以外的其他用戶,不能解析名稱。
  2. 在代碼中的表名引用或​​其實際名稱中存在區分大小寫的問題。

如果您不是表的所有者(但有補助來訪問它!),你要麼需要有一個轉換參考MYTABLE到THE_ACTUAL_OWNER.MYTABLE一個Oracle同義詞,或參考架構限定符直接在你的代碼中。

第二種情況發生的可能性較小,但有時表創建腳本將在oracle中使用雙引號在對象名稱周圍創建對象,這將允許創建混合大小寫標識符 - CREATE TABLE「myTable」將創建混合大小寫標識符然後必須由混合大小寫字符串引用。

爲我們提供了進一步的信息,並帶有某種特別的SQL工具相同的用戶作爲應用程序的連接,並張貼結果:

選擇所有者,表名從ALL_TABLES在表格名=「theNameOfTheTableOfinterest」 ;

4

dpbradley可能是正確的,但是,我只是碰到了下面的問題,11g和休眠: - 的Oracle 11g將讓你定義一個表的名稱大於30個字符 - 但是,你不能真正參考因爲它的名字太長,所以在SQL語句中將該表放置到該表中。

  • Hibernate的自動生成的DDL似乎照顧沒有或警告時,它產生的DDL