[Seasar-user:3605] [S2Dao]RELNO設定時の“結合なしSQLの結果”の仕様について
kubo
[E-MAIL ADDRESS DELETED]
2006年 5月 11日 (木) 19:49:33 JST
久保と申します。
S2Daoの仕様に関する質問です。
環境:
s2-extension-2.3.8.jar
s2-framework-2.3.8.jar
s2-dao-1.0.33.jar
例えば、以下のようなテーブル構造があったとします。
BOOK (本)
BOOK_ID not null (PK)
BOOK_NAME not null
AUTHOR_ID not null (FK)
AUTHOR (著者)
AUTHOR_ID not null (PK)
AUTHOR_NAME not null
そして、BOOKエンティティには、以下のようなアノテーションを設定をします。
public static final int author_RELNO = 0;
public static final String author_RELKEYS = "AUTHOR_ID:AUTHOR_ID";
<A>
DaoにてSQL自動生成で検索をします:
BOOKエンティティはAUTHORエンティティを保持している
そのAUTHORエンティティのAUTHOR_IDにはDB上の「著者ID」が存在します。
そのAUTHORエンティティのAUTHOR_NAMEにはDB上の「著者名」が存在します。
つまり、SQL自動生成にて自動で結合され、エンティティへのマッピングも
自動で行われます。(これはこれでいいのですが・・・)
<B>
では、「DaoにてSQL自動生成で検索」ではなく、以下のように
SQLアノテーションにて検索をします。
public static final String getListAll_SQL
= "select BOOK_ID, BOOK_NAME, AUTHOR_ID from BOOK";
これは、BOOKだけを純粋に検索したい場合となります。
この結果の個人的な期待は:
BOOKエンティティはAUTHORエンティティを保持しない(nullが返る)、
ですが、実際は:
BOOKエンティティはAUTHORエンティティを保持しており、
そのAUTHORエンティティのAUTHOR_IDにはDB上の「著者ID」が存在します。
そのAUTHORエンティティのAUTHOR_NAMEはnull。
です。
RELNOやRELKEYSを設定した状態のエンティティを利用すると、
SQLアノテーションなどで結合対象から外しても、
主キーのみ存在する空のFK先エンティティは存在する。
これは、S2Daoの仕様になりますでしょうか?
これは業務上あまり問題にはなりませんが、自分はS2Daoを少し包含した
フレームワークを開発しており、細かい絡みになりますが少し気になってます。
--
kubo <[E-MAIL ADDRESS DELETED]>
Seasar-user メーリングリストの案内