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