■アプリケーションの実行時に「指定されたメソッドは当ドライバではサポートされていません」が出力される
“第1章 概要”の“■データベース関連”を参照してください。
Symfowareを使用している場合、"5.5.1 データベース固有の注意点"を参照してください。
■アプリケーションの実行時に「SQLException: Parameter index out of range」が出力される
SQL Mapファイルにおいて、コメント内にインラインパラメータが存在すると発生する場合があります。
コメントからインラインパラメタを削除してください。
問題が発生する例
<insert id=”insertProduct” > insert into PRODUCT (PRD_ID, PRD_DESCRIPTION) values (#id#, #description#) /* #name# */ </insert> |
■キャッシュから予想外の結果が返却される
キャッシュを使用する場合、ステートメントのパラメタが複数ある場合でパラメタにnullが含まれる場合に、キーが重複する場合があります。
パラメタにnullが含まれないようにアプリケーションを見直してください。
■リソースファイルの値が使用できない
リソースファイルの値を${...}で使用する場合に、SQL文中に{...}を含む文を混在すると正常に値が読み込まれません。
SQLを見直してください。
問題が発生する例
<properties resource="org/something/applicationname/backend/dao/db.properties" /> <select id="getSomething" resultClass="Something" resultMap="SomethingResult"> <![CDATA[ SELECT * FROM ${something.schema_name}.${something.table_name} t WHERE {call MyProcedure(1, 0)} AND (${maximum_number} > ( SELECT count(*) FROM ${something.schema_name}.${something.table_name} t2 WHERE t1.xxx = t2.yyy) ) ]]> </select> |
■<dynamic>タグ内でtypeHandlerが有効にならない
<dynamic>タグ内ではtypeHandlerを使用できません。
<dynamic>タグを使用しないようにSQLを見直してください。
■<dynamic>タグ内でprepend属性が有効にならない
タグをネストしている場合にprepend属性が有効にならない場合があります。
ネストしないようにSQLを見直してください。
■アプリケーションの実行時に「java.sql.SQLException: カラム名が見つかりません」が出力される
テーブルのカラム名に各国語を利用している場合、ソースファイルのエンコーディングとビルド時の文字コードおよび実行時の文字コードが合っていない場合に発生する場合があります。
ソースファイルのコメント部分などに日本語が含まれる場合は、ソースファイルのエンコーディングをビルド時および実行時の文字コードに合うように変換してください。
上記の対処でも改善しない場合は、SQL Mapファイルに記述するSQLにおいてAS演算子を使用してください。
■アプリケーションの実行時に「SQL Exception : Unable to set AutoCommit property.トランザクション処理でこの操作は誤っています」が出力される
JNDIで取得したデータソースによりSymfowareに対してSELECTを実行した際に発生する場合があります。
WARNINGメッセージであるため処理は正常に続行されますが、このメッセージを発生させないためには以下のいずれかの対処を行ってください。
iBATISのSQL Map設定ファイルでは<transactionManager>を定義せず、Spring Frameworkのトランザクション機能を使用する構成にする。
SQL Map設定ファイルの<transactionManager>においてcommitRequiredを"true"に設定する。
この場合、SQL実行毎にiBATISによりcommitされます。