[Seasar-user:20493] Re: 【S2JDBC】多対多のテーブルにおける検索について

Shouta Morimoto [E-MAIL ADDRESS DELETED]
2011年 1月 9日 (日) 00:51:28 JST


小林様

いつもお世話になります、森本です。


下記早速のご回答ありがとうございました。
ご連絡頂いた内容でよく理解できました。(勉強不足で申し訳ありません。)
私はS2Jdbc-Genは使用しておりませんので、前者の方法で試したところ、
うまく情報が取れていることが確認できました。

以上になります。
ありがとうございました。

(2011/01/09 0:30), Koichi Kobayashi wrote:
> 小林 (koichik) です.
> 
> Date:    Sun, 09 Jan 2011 00:09:22 +0900
> From:    Shouta Morimoto<[E-MAIL ADDRESS DELETED]>
> To:      [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:20491] 【S2JDBC】多対多のテーブルにおける検索について
> 
>> 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;
>> =========================================================
> 
> この SQL は次のように書いたのと同じです.
> 
> select a.id order_id, c.name item_name
> from test.order_info a
>    inner join test.order_item_rel b on a.id = b.order_id
>    inner join test.item_info c on b.item_id = c.id
> where a.id=1;
> 
>> これをAutoSelectを使ってメソッドチェーンで表現することは
>> できるのでしょうか?JdbcManagerのfromメソッドには一つの
>> Entityしか指定できないようですし、S2JDBCのサンプルにも
>> このような例は載っていませんでした。
> 
> 上記の INNER JOIN を使った SQL は,
> 
> 「結合のネスト」
> http://s2container.seasar.org/2.4/ja/s2jdbc_manager_auto.html#結合のネスト
> 
> を使って
> 
> jdbcManager
>    .from(OrderInfo.class)
>    .innerJoin("orderItem")
>    .innerJoin("orderItem.itemInfo")
>    .id(id)
>    .getResultList();
> 
> のように SQL とほぼ同じように書くことができます.
> 
> S2Jdbc-Gen を使っているなら,"orderItem" 等の
> リテラルを使わず
> 
> jdbcManager
>    .from(OrderInfo.class)
>    .innerJoin(orderItem())
>    .innerJoin(orderItem().itemInfo())
>    .id(id)
>    .getResultList();
> 
> のようにすることもできます.
> 
> http://s2container.seasar.org/2.4/ja/s2jdbc_typesafe.html
> 
> 


-- 
森本 將太
e-mail: [E-MAIL ADDRESS DELETED]


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