[Seasar-user:20491] 【S2JDBC】多対多のテーブルにおける検索について
Shouta Morimoto
[E-MAIL ADDRESS DELETED]
2011年 1月 9日 (日) 00:09:22 JST
お世話になります、森本と申します。
掲題の件について、質問いたします。
今以下の3テーブルがある状況で、DBからデータを引く事を考えています。
ショッピングサイト構築などでよく見かける注文履歴テーブルと
商品テーブルという多対多の関係の間に関連テーブルをはさむパターンです。
(本当にやりたいこととは少し違いますが、話を簡単にするために
以下の例で説明させて頂きます。)
=========================================================
★注文履歴用のテーブル
CREATE TABLE `order_info` (
`id` int(11) NOT NULL,
PRIMARY KEY (`id`)
)
★商品用のテーブル
CREATE TABLE `item_info` (
`id` int(11) NOT NULL,
`name` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
)
★上記二つを結ぶための関連テーブル
CREATE TABLE `order_item_rel` (
`order_id` int(11) NOT NULL,
`item_id` int(11) NOT NULL,
PRIMARY KEY (`order_id`,`item_id`)
)
=========================================================
これらのテーブルを使って、注文履歴を抽出することを考えます。
SQLで言うと以下のようなことをしたいと考えています。
=========================================================
select a.id order_id, c.name item_name
from test.order_info a, test.order_item_rel b, test.item_info c
where a.id = b.order_id and b.item_id = c.id and a.id=1;
=========================================================
これをAutoSelectを使ってメソッドチェーンで表現することは
できるのでしょうか?JdbcManagerのfromメソッドには一つの
Entityしか指定できないようですし、S2JDBCのサンプルにも
このような例は載っていませんでした。
一応Entityだけは3テーブル分作成し、ManyToOne, OneToManyのアノテーション
を張ることができるところまでは確認しています。(Seasar2徹底入門より)
もし上記で実現できない場合、selectBySqlを使って、上記SQLを
直接Stringオブジェクトに書き込んでしまう方法も考えたのですが、
S2JDBCにおいてSQLの実行結果がどのようにJavaオブジェクトに
マッピングされているのかがわかっていないため、実際どのような
SQL及びJavaコードを書けばいいのかもわかっていません。
以上、初歩的な質問で申し訳ございません。
既存ドキュメント等への参照だけでも構いませんので、
ご教授の程よろしくお願いいたします。
---
森本
Seasar-user メーリングリストの案内