2009-07-28 11 views
0

データベースをPostgreSQLからOracle 11gに変更しています。私は、JavaとStrutsでhibernate 3.0を使用しています。oracle 11g hibernate problem

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

それは最も可能性の高い2例一つだ:

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

あなたがテーブルの所有者でない場合は(それにアクセスするための助成金を持っている!)、あなたはTHE_ACTUAL_OWNER.MYTABLEにMYTABLEへの参照を変換したOracleシノニムを持っている、またはスキーマを参照するか必要があります修飾子をコード内に直接記述します。

2番目のケースはそうではありませんが、テーブル作成スクリプトはオブジェクト名の前後に重複してオブジェクトを作成することがあります。大文字と小文字の混在した文字列で参照する必要があります。 、さらに情報を提供してくれるアプリケーションと同じユーザーとしてアドホックSQLツールのいくつかの並べ替えを接続し、その結果投稿する

選択所有者、TABLE_NAME = ALL_TABLESからtable_nameの「theNameOfTheTableOfinterest」 ;

4

dpbradleyは、しかし、私はちょうど11グラムと、以下のような問題に遭遇し、休止状態、おそらく正しいです: - Oracle 11gのは、あなたが30文字 より大きい名前のテーブルを定義できます - しかし、あなたが実際に参照することができませんその名前が長すぎるため、SQLステートメント内のそのテーブルに移動します。

  • Hibernateの自動は、DDL
を生成するときにDDLがケアに見えるか、警告しません生成しました