0

データベースを PostgreSQL から Oracle 11g に変更しています。Java と Struts で休止状態 3.0 を使用しています。

すべてが 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: 表名が無効です

この件に関して誰か助けてもらえますか?

ありがとう。

4

2 に答える 2

3

これは、次の2つのケースのいずれかである可能性があります。

  1. テーブルの所有者以外のユーザーとして接続していて、名前を解決できません。
  2. コード内のテーブル名またはその実際の名前への参照では、大文字と小文字の区別に問題があります。

テーブルの所有者でない場合(ただし、テーブルへのアクセスを許可している場合)は、MYTABLEへの参照をTHE_ACTUAL_OWNER.MYTABLEに変換するOracleシノニムを使用するか、コードでスキーマ修飾子を直接参照する必要があります。

2番目のケースの可能性は低くなりますが、テーブル作成スクリプトがOracleでオブジェクトを作成し、オブジェクト名を二重引用符で囲みます。これにより、大文字と小文字が混在する識別子を作成できます。CREATETABLE "myTable"は、大文字と小文字が混在する識別子を作成します。大文字と小文字が混在する文字列によって参照されます。

さらに詳しい情報を提供するには、アプリケーションと同じユーザーとして、ある種のアドホックSQLツールに接続し、次の結果を投稿してください。

all_tablesからowner、table_nameを選択します。ここでtable_name ='theNameOfTheTableOfinterest';

于 2009-07-28T13:21:47.603 に答える