[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 メーリングリストの案内