[Seasar-user:8451] Re: [DBFlute] 外部TBL結合時の文字数OVERについて
kubo
[E-MAIL ADDRESS DELETED]
2007年 6月 19日 (火) 10:21:48 JST
久保です。
> DBFluteのsetupSelect_Xxx()、withYyy()
> を使用して外部テーブル結合(left outer join)を実施する際
> に、発行されるSQLについてですが、
>
>
> select
> ・・・
> Xxx.XXXXX AS XXXXX_0,
> Yyy.YYYYY_n2 AS YYYYY_0_0,
> ・・・
> ・・・
>
> となり、後ろに「_0」「_0_0」等の連番が振られます。
> これによって、カラム名がORACLEの識別子文字数制約(30文字)
> に近い場合に、文字列長超過でエラーとなってしまいます。
> 何か対処方法などございますでしょうか?
悩ましい問題ですが、
カラム名(As)に関してはS2DaoがEntityに値をMappingする際に利用します。
なので、テーブルの別名(multipleFKPropertyMap)の時のように
DBFlute内だけで工夫してどうにかなる状態ではないのが現実です。
拡張次第で実現可能かもしれませんが、検証・実装と時間が掛かりそうです。
文字列長超過してしまうテーブルに関しては、
さしあたっては、includeAsMine()での回避とさせて頂けないでしょうか?
cb.setupSelectXxx().withYyy();
↓
cb.query().queryXxx().includeAsMine_XxxColumn("xxxAlias");
cb.query().queryXxx().queryYyy().includeAsMine_YyyColumn("yyyAlias");
→ XxxとYyyテーブルの欲しいカラムを指定
かつ、
中心テーブルのEntityのEx領域に、xxxAliasとyyyAliasの
Getter/Setterを定義する。
参考:以下のURLの「7」
http://dbflute.sandbox.seasar.org/ja/tips-condition_bean.html
#
# Oracleの30文字制限って外せないんでしょうかね...
# 確かにこれは実利用上の問題なので、課題としたいと思います。
#
Seasar-user メーリングリストの案内