[Seasar-user:1757] Re: アンダーバーを含むカラム名の自動マッピングについて

Yasuo Higa higa
2005年 4月 6日 (水) 19:07:20 JST


ひがです。
> 
> > 縣です。
> > 
> > >S2Dao1.0.25
> > >-カラム名に_がある場合でも自動的にマッピング
> > > できるようにしました。S2.2.6が必要です。
> > 
> > S2Dao1.0.25の_がある場合の自動マッピングについて要望です。
> > 
> > 自動マッピングが標準機能として実装されて、非常に助かっています。
> > しかし、TABLEアノテーションで指定されたテーブル以外のカラムでは、
> > 自動的にマッピングされないようなので、ちょっと困っています。
> > 
> 取り込みました。
> 次のバージョンで反映されます。

ちょっと補足すると、今のバージョンなら上記の場合、SQLファイルを
手書きしていると思うので、正直ASで別名つけろでもいいかなと思ったのですが、
将来のバージョンで、SECONDARY_TABLEアノテーションが追加されるはずなので、
その絡みもあって対応しました。

SECONDARY_TABLEアノテーションとは、EJB3(Kuina)の先取りですが、

public static final String SECONDARY_TABLE_エイリアス名 = "テーブル名";

という風に定義しておき、SECONDARY_TABLEに存在するカラム名が
プロパティとして存在するなら、自動的にジョインして値をとってきてくれる
というものです。

例えば、AとBがN:1、BとCがN:1でマッピングされていて、
A(BID)、B(BID,CID)、C(CID)のような関係だとすると()の中はカラム名

SECONDARY_TABLE_b = "B";
SECONDARY_TABLE_c = "C";
SECONDARY_TABLE_c_RELKEYS = "b.cid:cid";

のようにすることで、ネストしたN:1のテーブルのデータも
SQLを書かずに取得できるようになります。

A(BID,CID)、B(BID)、C(CID)のような関係だと
SECONDARY_TABLE_b = "B";
SECONDARY_TABLE_c = "C";
だけでOK。

ジョインはデフォルトだとLEFT OUTERジョインになります。
ジョイン部分だけを明示的に書くことも可能にする予定。

いつまでにというのは聞かないでください。(笑)
---
ひがやすを(http://d.hatena.ne.jp/higayasuo/)



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