[Seasar-user:3966] [S2Dao]質問:EntityのTable-Annotationについて

kubo [E-MAIL ADDRESS DELETED]
2006年 6月 26日 (月) 21:18:08 JST


久保です。

質問です。

EntityのTable-Annotationについて



例えば、以下のようなテーブル構造があって、

BOOK
  BOOK_ID   (PK)
  BOOK_NAME
  AUTHOR_ID (FK)

AUTHOR
  AUTHOR_ID (PK)
  AUTHOR_NAME


BOOK_IDとBOOK_NAMEとAUTHOR_NAMEを持ったBookAuthorなるBeanを作成し、
以下のようなSQLで値を取得するとします。(DaoもBookAuthorDaoを作成)

select BOOK.BOOK_ID, BOOK.BOOK_NAME, AUTHOR.AUTHOR_NAME
  from BOOK
    left outer join AUTHOR on BOOK.AUTHOR_ID = AUTHOR.AUTHOR_ID
 where BOOK.BOOK_ID = /*bookId*/


その時の、BookAuthor-Classに定義するTable-Annotationは、
何を設定するべきでしょうか?

A 「BOOK」を指定する。
  →特にWARNはでない。
   但し、SELECT句のBOOK_IDとBOOK_NAMEに
   Aliasとして [as bookId] [as BookName]を
   付けるとBeanに反映されない。

B 指定しない、もしくは、「BookAuthor」
  →WARN:テーブル(BookAuthor)が見つかりません
   でも、処理はうまくいく。
   Aliasとして [as BookId] [as bookName]を付けても問題ない。
   (BOOKに所属している列は全てそうなった)


この場合の例はちょっと簡単過ぎますが、
結合に結合を重ねて色々なTableの列をSELECT句に含める時や、
GROUP BYなどを利用するときは、「そのSQLに合わせた形のBean」を
作成することがよくあります。

何か推奨する指針があれば教えていただきたいです。



※ちなみにS2Dao.netでは「B」の場合は例外が発生します(テーブルが無いと)。
 なので「A」しか選択肢が無いのですが・・・


-- 
kubo <[E-MAIL ADDRESS DELETED]>





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