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