[Seasar-user:7138] Re: [DBFlute]join 時の別名付与について
kubo
[E-MAIL ADDRESS DELETED]
2007年 4月 9日 (月) 16:02:25 JST
久保です。
> DBFluteにてleft outer joinを使用した際に、複数のローカルcolumnに
> 同一の外部columnを指定した場合、生成されたSQLに内部的に振られて
> いるテーブルの別名について、現在、
>
> 「【テーブル名のアンダーバー無し】By【カラム名のアンダーバー無し】」
>
> と、なっていると思いますが、当方のプロジェクトにて、どうしても
> oracleの制約(30 CHAR以内)に引っかかってしまう(SqlException)
> という問題が発生しています。
>
> そこで、この別名を短くすることはできないでしょうか?
なるほどOracleはFrom句のAlias名も30文字制限だったのですね...
こちらDBFlute側(つまり自分)が頑張る以外に対応策はありません。
今2つ案を考えて迷っています。
<A>
Alias名の「tableNameByColumnName」を
→ tableNameByCe // 先頭と最後の1文字を付与
→ tableNameByCome // 先頭と最後の2文字を付与
というようにColumn名がどうにかして省略する。
メリット : DBFlute側の修正が簡単。既に試してみた。
デメリット: Column名の規則性に依存してしまう。
場合によってはユニークにならないのでCompileErrorになる。
<B>
Alias名の「tableNameByColumnName」を
→ tableName1
→ tableName2
というようにS2DaoのREL_KEYに設定する番号をそのまま利用する。
メリット : 絶対的にユニークになるはず。
デメリット: DBFlute側の修正がちょっとある。
まだ試していない。(数字入れても大丈夫かな!?検証中)
という感じです。
「A」は簡単ですが、仕様的に行き詰ってしまうので、
現在「B」を検討中です。
Seasar-user メーリングリストの案内