[Seasar-user:10292] Re: [DBFlute] 識別子が長すぎるを解決したい

kubo [E-MAIL ADDRESS DELETED]
2007年 9月 4日 (火) 09:43:53 JST


久保です。

> > > > http://dbflute.sandbox.seasar.org/download/2007-09-04/dbflute-0.5.6-SNAPSHOT.zip
> > > > 
> > > > を試していただけるとありがたいです。
> > > > Oracleで30文字を超えるAlias名は、内部的にAlias名を
> > > > 短くしてSQLを構成するようにしています。
> > 
> > 見事に解決できました.いやー,ありがたい.助かりました.
> > しばらく使ってみますね.
> 
> といったのですが,SQLはうまく発行できているようなのですが,Entityが返っ
> てきませんね.試しに,ログにでたSELECT文をSQL plusに貼り付けて実行したら
> 結果はちゃんととれていますので,DBFlute側の問題かと思います.

自動で短くなった部分のテーブルだけが取得できないでしょうか?
(例えば、Alias名が短くなった関連テーブルが取れないとか
         自己参照FKのものだけが取れないとか)

何か具体的な現象を頂けたらありがたいです。(よろしくお願いします)


allcommon.cbean.sqlclause.AbstractSqlClause#isValidJoinAliasName()で、
  return true; → return false;
とすると、全てのAlias名がRELNOを使った短いものになります。
今は、OracleのSubClassで「aliasName.length() <= 30」としています。

これを、「return false;」or「return aliasName.length() <= 8」などに修正して、
ローカルで試しているのですが、正常にEntityが取得できています。
(お試しDBはApacheDerbyですが、自己参照FKでもMultipleFKでもOKです)
なので、また何かOracle固有のものがあるのかもしれません。

  ※Oracle以外はOverrideしていないのでAbstractSqlClauseのメソッド
    が評価されます

EntityへのMappingに関しては、S2Daoに完全に任せているため、
ちょっとパッと原因がつかめていない状況です。
引き続き探っています。




Seasar-user メーリングリストの案内