メタデータのメソッドgetColumns()
は、シノニムに対して空の ResultSet を返しています (テーブルとビューの場合、列のリストを適切に返しています)。
これは、Oracle 11g Express で最新の Oracle JDBC ドライバー (11.2.3) を使用して発生します。
これは他の SQL サーバーでも発生しますか?
この問題を解決するためのヘルプ/アイデアは大歓迎です。
デフォルトでは、Oracle ドライバは のシノニムに関する情報を返しませんgetColumns()
。これは、Oracle 11g JDBC Developer's Guide のPerformance Extensionsに記載されています。
getColumns に関する考慮事項
デフォルトでは
getColumns
、シノニムが指定されている場合、メソッドは列に関する情報を取得しません。シノニムが指定されている場合に情報の取得を有効にするには、setIncludeSynonyms
次のように接続でメソッドを呼び出す必要があります。( (oracle.jdbc.driver.OracleConnection)conn ).setIncludeSynonyms(true)
これにより、接続上の後続のすべての
getColumns
メソッド呼び出しに同義語が含まれるようになります。これは に似ていsetRemarksReporting
ます。または、includeSynonyms
接続プロパティを設定できます。これはremarksReporting
接続プロパティに似ています。ただし、が trueの場合、シノニムが存在する場合、列に
includeSynonyms
返されるオブジェクトの名前はシノニム名になることに注意してください。table_name
これは、テーブル名を に渡した場合でも当てはまりますgetColumns
。
この最後の項目は、心に留めておくことが非常に重要であることに注意してください。