jfluteです
> dfpropで設定していないのに、SQLにcatalog,schema名が付いちゃう件
なんとなく仮説が一つ立ちました。
ConditionBeanのSQLのテーブル名にcatalog,schema名が
付くかどうかの判定は…
A. littleAdjustmentMap.dfpropのプロパティをtrueにしているかどうか
B. AdditionalSchemaかどうか
C. MainSchemaではない、かどうか
C は、通常はあり得ない状況で、
メタデータのSchema名とdatabaseInfoMap.dfpropで
指定されたSchema名が食い違うようなケースです。
Schema名に % とかワイルドカードを指定しない限り、
想定されない状況です。
山本さんの環境だと、AとBには合致していません。
で、C なんですけど…
通常のDB2:
o databaseInfoMap.dfprop: catalog名は指定しない
o JDBCのメタデータ: catalog名は取得されない
AS400のDB2:
o databaseInfoMap.dfprop: catalog名は指定しない
o JDBCのメタデータ: catalog名は取得される
という状況と予想され、
dfpropとメタデータで食い違いが発生してしまい、
それぞれのテーブルがMainSchemaのものと認識されず、
Cの状況としてテーブル名のprefixになってしまっている
のではないかと思います。
> DBFluteクライアントのproject-schema-xxx.xmlを確認したところ、tableタグのschema属性が
> [catalog-name].[schema-name] となっていることに気づきましたが、関係ありますか?
すいません、ここ関係ないと言ってしまったのですが、
厳密には、schema属性が存在すること自体は問題ありませんし、
他のDBMSだと [catalog-name].[schema-name] 形式になっていることも
問題ありませんが、普通のDB2だと [schema-name] 形式が期待値なので、
[catalog-name].[schema-name] とcatalogがくっ付いているのは想定外です。
「AS400のJDBCドライバだと [catalog-name] が取得できるちゃうんだー」
という感じで。
他のDBMSで [catalog-name] が取得できる場合は、
databaseInfoMap.dfprop の接続URLの中に[catalog-name]が含まれていて、
DBFluteが明示的な [catalog-name] を認識できるので、
メタデータの [catalog-name] と比較してMainSchemaであることを
判断することができます。
AS400だと、そこがズレちゃってるようで。
<< ということで >>
山本さん、
databaseInfoMap.dfprop にて、
url = ...
catalog = カタログ名 (要はデータベース名)
schema = ...
user = …
というように、catalog を指定して自動生成し直して、
ConditionBeanのSQLを見てみて頂けないでしょうか?
恐らく、これで SQL のテーブル名prefixが無くなるんじゃないかと。