[seasar-dotnet:2223] Re: [DBFlute.NET]業務的one-to-oneの設定(別リレーションのカラム利用)

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2012年 11月 5日 (月) 20:14:30 JST


久保 様

uparrowです。

さっそく、こちらのSNAPSHOTで試してみました。
ざっと動かしましたが、問題なく、期待する動作をしております。

> DBFlute.NETの方ではとりあえずキャッシュOFFで回避、
> というポリシーで考えています。
わかりました。

ご対応いただきありがとうございました。

> 久保(jflute)です
> 
> DBFlute.NET-0.8.9.49-SNAPSHOTにて、
> 最低限の対応をしてみました。
> http://dbflute.net.sandbox.seasar.org/ja/environment/newest.html
> 
> XxxCB cb = new XxxCB();
> cb.DisableRelationMappingCache();
> 
> とすると、正しくマッピングされるんじゃないかと。
> ただし、キャッシュ機構をOFFにするので、
> 
> foo : 1
> bar : 1
> qux : 2
> corge : 3
> 
> というように、fooとbarが同じ 1 を参照していても、
> 1のEntityのインスタンスはそれぞれ new されます。
> 人が感じ取れないほどのパフォーマンス劣化がありますが、
> (というか大量件数でない限りミリ秒レベルであまり差はないかと...)
> 動作に問題はないと考えられます。
> 
> ソースいじっただけで何も動かしてないので、
> トライアンドエラーさせて頂ければと思います。
> 何かエラー出たらすぐに言って頂ければと。
> 
> キャッシュをOFFにしなくてもマッピングできるような修正は、
> Java版の方ではチャレンジしていこうかと思いますが、
> DBFlute.NETの方ではとりあえずキャッシュOFFで回避、
> というポリシーで考えています。
> 
> 2012/11/3 kubo <dbflute @ gmail.com>:
> > 久保(jflute)です
> >
> > uparrowさん、ありがとうございます。
> > 最低限何かしらの対応は入れようかと思いますので、
> > (気長に)しばしお待ちくださいませ。
> >
> >
> > ※ひらめきを思考する時間と場所が欲しい...
> >
> > 2012/11/2  <uparrow @ nifty.com>:
> >> 久保様
> >>
> >> uparrowです。
> >>
> >>> 「対応されてもこの期日を過ぎるともう利用できない」
> >>> というような時間的な制約はどのような感じでしょうか?
> >> 今のところ、別な方法でデータを取得するように暫定対応を行っているので特に急ぎません。
> >> もし対応いただけるのなら、対応いただいた後に恒久対応として適用したいと思います。
> >>
> >> よろしくお願いします。
> >>
> >>> くぼです
> >>>
> >>> uparrowさん、ご確認ありがとうございます。
> >>> なるほど、.NETでも同じ挙動ですね。
> >>> Java版でも同じ結果となりました。
> >>>
> >>> ちなみに、
> >>> 「対応されてもこの期日を過ぎるともう利用できない」
> >>> というような時間的な制約はどのような感じでしょうか?
> >>>
> >>> かなりのコアな部分への対応になるので手順だって
> >>> やっていきたいのと、対応の妥協レベルが何段階かに
> >>> なると思うので、その辺のバランス取るのに参考にしたいと。
> >>>
> >>> 2012/11/1  <uparrow @ nifty.com>:
> >>> > 久保様
> >>> >
> >>> > uparrowです。
> >>> > こちらの件ご検討いただきありがとうございます。
> >>> >
> >>> > さっそくですが、試してみました。
> >>> > 結果は、想定のデータが取得できました。
> >>> >
> >>> > ただ、試した内容に自信がないので、行ったことを以下に記載します。
> >>> >
> >>> > ■T_CHILD テーブルを作成
> >>> > CREATE TABLE T_CHILD
> >>> > (
> >>> >     SHIJI_ID                       DECIMAL(12,0) NOT NULL,
> >>> >     LINE_ID                        DECIMAL(12,0) NOT NULL,
> >>> >     TEST_CD                        VARCHAR(10) NULL
> >>> > )
> >>> > go
> >>> > ALTER TABLE T_CHILD
> >>> >     ADD CONSTRAINT PK_T_CHILD PRIMARY KEY  (SHIJI_ID, LINE_ID)
> >>> > go
> >>> >
> >>> > ■FKを設定
> >>> > [additionalForeignKeyMap.dfprop]
> >>> >     ; FK_T_CHILD_01 = map:{
> >>> >         ; localTableName  = T_CHILD             ; foreignTableName  = T_B
> >>> >         ; localColumnName = SHIJI_ID            ; foreignColumnName = SHIJI_ID
> >>> >         ; fixedSuffix = ByShijiId
> >>> >     }
> >>> >
> >>> > ■テストコード
> >>> >         [Test, Quill(Tx.Rollback)]
> >>> >         public void FindTest2()
> >>> >         {
> >>> >             TChildCB cb = new TChildCB();
> >>> >             cb.SetupSelect_TBByShijiId().WithTAMeiBySeizoIdSeizoLineId().WithTABySeizoId();
> >>> >             cb.SetupSelect_TBByShijiId().WithMKouseiAsKousei();
> >>> >             cb.Query().SetLineId_Equal(1);
> >>> >             cb.Query().AddOrderBy_ShijiId_Asc();
> >>> >             cb.Query().AddOrderBy_LineId_Asc();
> >>> >
> >>> >             ListResultBean<TChild> dbEntityList = tChildBhv.SelectList(cb);
> >>> >
> >>> >             foreach (TChild dbEntity in dbEntityList)
> >>> >             {
> >>> >                 if (dbEntity.TBByShijiId.TAMeiBySeizoIdSeizoLineId.TABySeizoId.HinmokuCd != dbEntity.TBByShijiId.MKouseiAsKousei.SeihinHinmokuCd ||
> >>> >                     dbEntity.TBByShijiId.ProcNo != dbEntity.TBByShijiId.MKouseiAsKousei.ProcNo)
> >>> >                 {
> >>> >                     Assert.Fail();
> >>> >                 }
> >>> >             }
> >>> >         }
> >>> >
> >>> > 局所的な回避でもよいので、対応いただけると助かります。
> >>> >
> >>> > よろしくお願いします。
> >>> >
> >>> >> 久保(jflute)です
> >>> >>
> >>> >> uparrowさん、ちょっと試して頂きたいことがあります。
> >>> >>
> >>> >> T_Bを基点にするのではなく、
> >>> >> T_Bの子テーブル(仮にT_CHILD)を基点にConditionBeanをnewして、
> >>> >> T_CHILD -> T_B -> M_KOUSEI という関連で M_KOUSEI が
> >>> >> 正しく取得されるかどうか確認してもらいたいです。
> >>> >>
> >>> >> S2Daoはもともと一階層しか結合できないので、
> >>> >> キャッシュも一階層になっているので、
> >>> >> もしかしたら二階層目以降でのマッピングなら
> >>> >> うまく動作するのかなぁと。
> >>> >>
> >>> >> であれば、キャッシュ機構をオフにするようなオプションを
> >>> >> CBやFKに付与したりすることで、局所的な回避ができるかも
> >>> >> しれないと思いまして。
> >>> >>
> >>> >> 2012/10/31 kubo <dbflute @ gmail.com>:
> >>> >> > 久保(jflute)です
> >>> >> >
> >>> >> > 期待持たせちゃうと悪いので、早めにメールしておきます。
> >>> >> > 結論的には
> >>> >> > 「今回DBFlute.NETで、この件の対応するのは難しい」
> >>> >> > 回避策があるなら回避で、という感じです。
> >>> >> >
> >>> >> > VIEWを作るやり方がお奨めですが、
> >>> >> > DB変更ができないからこそ困ってるって
> >>> >> > 感じであれば、VIEWも作れないですかね。
> >>> >> > すると個別に検索する方式での回避になってしまいます。
> >>> >> >
> >>> >> >> o Entity取得時のみ追加的にOverRelationのキーを含める
> >>> >> >>  -> 局所的な対応となるが、わりと現実的かも
> >>> >> > の方向で進めていたのですが、
> >>> >> > 修正範囲が広く、Java版だとしてもかなり頑張る必要がある上に、
> >>> >> > .NET版においてはS2Dao.NETと絡む部分にもろ影響するので、
> >>> >> > やはりDBFluteRuntime.NETを作ってからじゃないと修正は厳しい
> >>> >> > と判断しました。
> >>> >> >
> >>> >> > かといってJava版だけ対応するってのも今回はやらずで、
> >>> >> > 既に1.0.0出しているのでコアなロジックに手を入れたくないのと、
> >>> >> > あまりに特殊なパターンで、かつ、非推奨と言えるDB構造のため、
> >>> >> > 修正量(リスク)のわりに対応ポイントが局所的であるので、
> >>> >> > 正式な Unsupported という扱いにしたいと思います。
> >>> >> >
> >>> >> > 実現可能性の思考はさらに続けていく予定ですが、
> >>> >> > 現時点では上記の通りです。
> >>> >> > 寒くなっていく季節変わりを感じながら、
> >>> >> > 発想生まれる場所でインスピレーションを待ちたいと。
> >>> >> >
> >>> >> >
> >>> >> > #
> >>> >> > # うーん、個人的にはめっちゃ悔しい限りなんですけど...
> >>> >> > #
> >>> >> >
> >>> >> > 2012/10/29 kubo <dbflute @ gmail.com>:
> >>> >> >> 久保(jflute)です
> >>> >> >>
> >>> >> >> 途中経過です。
> >>> >> >> 「厳しく時間掛かるかもだけど考え続けています」
> >>> >> >>
> >>> >> >> o カラムにOverRelationを組み込む
> >>> >> >>  -> 全体設計的に難しい
> >>> >> >> o Entity取得時のみ追加的にOverRelationのキーを含める
> >>> >> >>  -> 局所的な対応となるが、わりと現実的かも
> >>> >> >> o キー利用のキャッシュを抑制するオプション
> >>> >> >>  -> キャッシュを利用しなければマッピングは正しくなる
> >>> >> >>  -> 全く同じ値の関連Entityが毎回newされる (最終手段)
> >>> >> >>
> >>> >> >> Java版でも再現しています。
> >>> >> >> まずは気軽に試せるJava版で試行錯誤しています。
> >>> >> >> ただ、.NET版ではS2Dao.NETが絡む部分などで修正の
> >>> >> >> 敷居が上がってしまうため、そこを見越した修正内容に
> >>> >> >> していくためのさじ加減を考慮に入れています。
> >>> >> >>
> >>> >> >>
> >>> >> >> 一応、回避としては、HINMOKU_CDを持った
> >>> >> >> T_Bのビューを作成すればってやり方が一つあります。
> >>> >> >>
> >>> >> >> 2012/10/26  <uparrow @ nifty.com>:
> >>> >> >>> 久保 様
> >>> >> >>>
> >>> >> >>> uparrowです。
> >>> >> >>>
> >>> >> >>>> なので、本当はこんなイメージなんですよね。(いまできないけど)
> >>> >> >>>>
> >>> >> >>>>      ; FK_T_B_A02 = map:{
> >>> >> >>>>          ; localTableName  = T_B            ; foreignTableName  = M_KOUSEI
> >>> >> >>>>          ; localColumnName =
> >>> >> >>>> PROC_NO/$$over($localTable.TAMeiBySeizoIdSeizoLineId.TABySeizoId)$$.HINMOKU_CD
> >>> >> >>>>          ; foreignColumnName = PROC_NO/SEIHIN_HINMOKU_CD
> >>> >> >>>>      }
> >>> >> >>> はい。このイメージです。
> >>> >> >>> このようなことができると助かります。
> >>> >> >>>
> >>> >> >>>> ちょと対応できるかどうかも含めて考えますね
> >>> >> >>> 現在は、別なデータの取得で回避していますが、
> >>> >> >>> 対応していただけると嬉しいです。
> >>> >> >>>
> >>> >> >>> よろしくお願いします。
> >>> >> >>>
> >>> >> >>>> 久保(jflute)です
> >>> >> >>>>
> >>> >> >>>> 恐らくですが、
> >>> >> >>>> EntityにマッピングするときのM_KOUSEIに
> >>> >> >>>> 対するキーがユニークにならなくて、
> >>> >> >>>> マッピングがうまくいってないのかと考えられます。
> >>> >> >>>>
> >>> >> >>>> fixedConditionは、
> >>> >> >>>> 相手がmanyのときにoneするための絞り込み(業務的one-to-one)、
> >>> >> >>>> もしくは、
> >>> >> >>>> 自分が関連と無関係なmanyを含んでるときに絞り込み(業務的many-to-one)、
> >>> >> >>>> に利用されることを想定していますが、
> >>> >> >>>> キーは、あくまで localColumnName や foreignColumnName に
> >>> >> >>>> 定義されたものである必要があります。
> >>> >> >>>>
> >>> >> >>>> なので、本当はこんなイメージなんですよね。(いまできないけど)
> >>> >> >>>>
> >>> >> >>>>      ; FK_T_B_A02 = map:{
> >>> >> >>>>          ; localTableName  = T_B            ; foreignTableName  = M_KOUSEI
> >>> >> >>>>          ; localColumnName =
> >>> >> >>>> PROC_NO/$$over($localTable.TAMeiBySeizoIdSeizoLineId.TABySeizoId)$$.HINMOKU_CD
> >>> >> >>>>          ; foreignColumnName = PROC_NO/SEIHIN_HINMOKU_CD
> >>> >> >>>>      }
> >>> >> >>>>
> >>> >> >>>> ちょと対応できるかどうかも含めて考えますね
> >>> >> >>>>
> >>> >> >>>>
> >>> >> >>>> 2012/10/26 村上れお <uparrow @ nifty.com>:
> >>> >> >>>> > 久保様
> >>> >> >>>> >
> >>> >> >>>> > uparrowと申します。
> >>> >> >>>> >
> >>> >> >>>> > こちらの送信サーバの問題かと思い、同様のメールを投稿してしまいました。
> >>> >> >>>> > すみません。
> >>> >> >>>> >
> >>> >> >>>> > 状況は変わっておりません。
> >>> >> >>>> >
> >>> >> >>>> > おっしゃる通り、発行されるSQLは問題なく、想定するデータを取得する文が
> >>> >> >>>> > 発行されているようでした。
> >>> >> >>>> >
> >>> >> >>>> >> アプリから実行するとEntityのデータがおかしい、って感じでしょうか?
> >>> >> >>>> >> また、具体的にEntityがどのようなデータになってしまうのでしょうか?
> >>> >> >>>> >> (例えば、T_Bに紐付くM_KOUSEIのデータが別レコードものだったり)
> >>> >> >>>> > その通りで、M_KOUSEIのデータの紐づくはずのない別なレコードが
> >>> >> >>>> > Entityに設定されておりました。
> >>> >> >>>> > Entityに設定される別なレコードの規則性はつかめておりません。
> >>> >> >>>> >
> >>> >> >>>> > 対応いただけると非常に助かります。
> >>> >> >>>> > テスト的に作成した環境もまだありますので、何かご協力できることがあれば
> >>> >> >>>> > いたします。
> >>> >> >>>> >
> >>> >> >>>> > よろしくお願いいたします。
> >>> >> >>>> >
> >>> >> >>>> >> 久保(jflute)です
> >>> >> >>>> >>
> >>> >> >>>> >> uparrowさん、こんばんは
> >>> >> >>>> >> まずはすいません。SeasarのMLの不具合で、
> >>> >> >>>> >> こちらのメールを受信しのがつい先ほどでして。
> >>> >> >>>> >> 既に何か進展あったかもしれませんが取り急ぎ。
> >>> >> >>>> >>
> >>> >> >>>> >> 設定の方、ぱっと見まちがったところはないように思えます。
> >>> >> >>>> >> 発行されるSQLをDBツールで実行すると想定する値になるけど、
> >>> >> >>>> >> アプリから実行するとEntityのデータがおかしい、って感じでしょうか?
> >>> >> >>>> >> また、具体的にEntityがどのようなデータになってしまうのでしょうか?
> >>> >> >>>> >> (例えば、T_Bに紐付くM_KOUSEIのデータが別レコードものだったり)
> >>> >> >>>> >>
> >>> >> >>>> >> 2012/10/15  <uparrow @ nifty.com>:
> >>> >> >>>> >> > uparrowと申します。
> >>> >> >>>> >> >
> >>> >> >>>> >> > 業務的one-to-oneを使おうと思っていますが、思ったデータが取得できずに困っています。
> >>> >> >>>> >> >
> >>> >> >>>> >> > 親の親の項目&自分の項目 と 別な親の2つの項目を
> >>> >> >>>> >> > 条件としてテーブルを結合させる必要があり、業務的one-to-oneの別リレーションのカラム利用
> >>> >> >>>> >> > する方法でadditionalForeignKeyMapのプロパティに設定しました。
> >>> >> >>>> >> >
> >>> >> >>>> >> > 実際にデータの取得を試みると、発行されるSQLは想定通りなのですが
> >>> >> >>>> >> > DBFluteのエンティティに設定される値が想定と異なるのです。
> >>> >> >>>> >> > (結合条件に使用しているキーなのに、それぞれのテーブルのエンティティの項
> >>> >> >>>> >> > 目値がことなる。)
> >>> >> >>>> >> >
> >>> >> >>>> >> > 設定や、使用方法に誤りがあるのでしょうか?
> >>> >> >>>> >> > アドバイスを頂戴できると助かります。
> >>> >> >>>> >> >
> >>> >> >>>> >> > [テーブル]
> >>> >> >>>> >> > 親 T_A
> >>> >> >>>> >> > 子 T_A_MEI
> >>> >> >>>> >> >
> >>> >> >>>> >> > 親 T_A_MEI
> >>> >> >>>> >> > 子 T_B
> >>> >> >>>> >> >
> >>> >> >>>> >> > 親 M_KOUSEI
> >>> >> >>>> >> > 子 T_B   ←自分のテーブル
> >>> >> >>>> >> >
> >>> >> >>>> >> > 親の親(T_A)のHINMOKU_CD & 自分(T_B)のPROC_NO
> >>> >> >>>> >> > 別な親(M_KOUSEI)のSEIHIN_HINMOKU_CD & PROC_NO
> >>> >> >>>> >> > をキーとして結合したい。
> >>> >> >>>> >> > クエリ発行後のM_KOUSEIのエンティティが想定の値と異なる。
> >>> >> >>>> >> >
> >>> >> >>>> >> > [テーブルDDL]
> >>> >> >>>> >> > 具体的なテーブルは以下となります。
> >>> >> >>>> >> > CREATE TABLE T_A
> >>> >> >>>> >> > (
> >>> >> >>>> >> >     SEIZO_ID                       DECIMAL(12,0) NOT NULL,
> >>> >> >>>> >> >     HINMOKU_CD                     VARCHAR(30) NULL,
> >>> >> >>>> >> > )
> >>> >> >>>> >> > go
> >>> >> >>>> >> > ALTER TABLE T_A
> >>> >> >>>> >> >     ADD CONSTRAINT PK_T_A PRIMARY KEY  (SEIZO_ID)
> >>> >> >>>> >> > go
> >>> >> >>>> >> >
> >>> >> >>>> >> > CREATE TABLE T_A_MEI
> >>> >> >>>> >> > (
> >>> >> >>>> >> >     SEIZO_ID                       DECIMAL(12,0) NOT NULL,
> >>> >> >>>> >> >     LINE_ID                        DECIMAL(12,0) NOT NULL,
> >>> >> >>>> >> > )
> >>> >> >>>> >> > go
> >>> >> >>>> >> > ALTER TABLE T_A_MEI
> >>> >> >>>> >> >     ADD PRIMARY KEY  (SEIZO_ID, LINE_ID)
> >>> >> >>>> >> > go
> >>> >> >>>> >> >
> >>> >> >>>> >> > CREATE TABLE T_B
> >>> >> >>>> >> > (
> >>> >> >>>> >> >     SHIJI_ID                       DECIMAL(12,0) NOT NULL,
> >>> >> >>>> >> >     SEIZO_ID                       DECIMAL(12,0) NULL,
> >>> >> >>>> >> >     SEIZO_LINE_ID                  DECIMAL(12,0) NULL,
> >>> >> >>>> >> >     PROC_NO                        VARCHAR(20) NULL,
> >>> >> >>>> >> > )
> >>> >> >>>> >> > go
> >>> >> >>>> >> > ALTER TABLE T_B
> >>> >> >>>> >> >     ADD CONSTRAINT PK_T_B PRIMARY KEY  (SHIJI_ID)
> >>> >> >>>> >> > go
> >>> >> >>>> >> >
> >>> >> >>>> >> > CREATE TABLE M_KOUSEI
> >>> >> >>>> >> > (
> >>> >> >>>> >> >     SEIHIN_HINMOKU_CD              VARCHAR(30) NOT NULL,
> >>> >> >>>> >> >     PROC_NO                        VARCHAR(20) NOT NULL,
> >>> >> >>>> >> >     BUHIN_NO                       VARCHAR(20) NOT NULL,
> >>> >> >>>> >> >     KANAGATA_CD                    VARCHAR(20) NULL
> >>> >> >>>> >> > )
> >>> >> >>>> >> > go
> >>> >> >>>> >> > ALTER TABLE M_KOUSEI
> >>> >> >>>> >> >     ADD CONSTRAINT PK_M_KOUSEI PRIMARY KEY  (SEIHIN_HINMOKU_CD, PROC_NO)
> >>> >> >>>> >> > go
> >>> >> >>>> >> >
> >>> >> >>>> >> >
> >>> >> >>>> >> > [additionalForeignKeyMap]
> >>> >> >>>> >> >     ; FK_T_A_MEI_01 = map:{
> >>> >> >>>> >> >         ; localTableName  = T_A_MEI         ; foreignTableName  = T_A
> >>> >> >>>> >> >         ; localColumnName = SEIZO_ID            ; foreignColumnName = SEIZO_ID
> >>> >> >>>> >> >         ; fixedSuffix = BySeizoId
> >>> >> >>>> >> >     }
> >>> >> >>>> >> >     ; FK_T_B_02 = map:{
> >>> >> >>>> >> >         ; localTableName  = T_B                 ; foreignTableName  = T_A_MEI
> >>> >> >>>> >> >         ; localColumnName = SEIZO_ID/SEIZO_LINE_ID  ; foreignColumnName = SEIZO_ID/LINE_ID
> >>> >> >>>> >> >         ; fixedSuffix = BySeizoIdSeizoLineId
> >>> >> >>>> >> >     }
> >>> >> >>>> >> >     ; FK_T_B_A02 = map:{
> >>> >> >>>> >> >         ; localTableName  = T_B            ; foreignTableName  = M_KOUSEI
> >>> >> >>>> >> >         ; localColumnName = PROC_NO            ; foreignColumnName = PROC_NO
> >>> >> >>>> >> >         ; fixedCondition =
> >>> >> >>>> >> >                   $$over($localTable.TAMeiBySeizoIdSeizoLineId.TABySeizoId)$$.HINMOKU_CD = $$foreignAlias$$.SEIHIN_HINMOKU_CD
> >>> >> >>>> >> >         ; fixedSuffix = AsKousei
> >>> >> >>>> >> >     }
> >>> >> >>>> >> >
> >>> >> >>>> >> > [データ取得ソース]
> >>> >> >>>> >> >         [Test, Quill(Tx.Rollback)]
> >>> >> >>>> >> >         public void FindTest()
> >>> >> >>>> >> >         {
> >>> >> >>>> >> >             TBCB cb = new TBCB();
> >>> >> >>>> >> >             cb.SetupSelect_TAMeiBySeizoIdSeizoLineId().WithTABySeizoId();
> >>> >> >>>> >> >             cb.SetupSelect_MKouseiAsKousei();
> >>> >> >>>> >> >
> >>> >> >>>> >> >             cb.Query().AddOrderBy_ShijiId_Asc();
> >>> >> >>>> >> >
> >>> >> >>>> >> >             ListResultBean<TB> dbEntityList = tBBhv.SelectList(cb);
> >>> >> >>>> >> >
> >>> >> >>>> >> >             foreach (TB dbEntity in dbEntityList)
> >>> >> >>>> >> >             {
> >>> >> >>>> >> >                 if (dbEntity.TAMeiBySeizoIdSeizoLineId.TABySeizoId.HinmokuCd != dbEntity.MKouseiAsKousei.SeihinHinmokuCd ||
> >>> >> >>>> >> >                     dbEntity.ProcNo != dbEntity.MKouseiAsKousei.ProcNo)
> >>> >> >>>> >> >                 {
> >>> >> >>>> >> >                     Assert.Fail();
> >>> >> >>>> >> >                 }
> >>> >> >>>> >> >             }
> >>> >> >>>> >> >         }
> >>> >> >>>> >> >
> >>> >> >>>> >> > [発行されるSQL]
> >>> >> >>>> >> > select  dfloc.SHIJI_ID as c0, dfloc.SEIZO_ID as c1, dfloc.SEIZO_LINE_ID as c2, dfloc.PROC_NO as c3
> >>> >> >>>> >> >      , dfrel_0.SEIZO_ID as c4, dfrel_0.LINE_ID as c5
> >>> >> >>>> >> >      , dfrel_0_0.SEIZO_ID as c6, dfrel_0_0.HINMOKU_CD as c7
> >>> >> >>>> >> >      , dfrel_1.SEIHIN_HINMOKU_CD as c8, dfrel_1.PROC_NO as c9, dfrel_1.BUHIN_NO as c10, dfrel_1.KANAGATA_CD as c11
> >>> >> >>>> >> >   from T_B dfloc
> >>> >> >>>> >> >     left outer join T_A_MEI dfrel_0 on dfloc.SEIZO_ID = dfrel_0.SEIZO_ID and dfloc.SEIZO_LINE_ID = dfrel_0.LINE_ID
> >>> >> >>>> >> >     left outer join T_A dfrel_0_0 on dfrel_0.SEIZO_ID = dfrel_0_0.SEIZO_ID
> >>> >> >>>> >> >     left outer join M_KOUSEI dfrel_1
> >>> >> >>>> >> >       on dfloc.PROC_NO = dfrel_1.PROC_NO
> >>> >> >>>> >> >      and dfrel_0_0.HINMOKU_CD = dfrel_1.SEIHIN_HINMOKU_CD
> >>> >> >>>> >> >  order by dfloc.SHIJI_ID asc
> >>> >> >>>> >> >
> >>> >> >>>> >> > ( dfrel_0_0.HINMOKU_CD,dfloc.PROC_NO と dfrel_1.SEIHIN_HINMOKU_CD,dfrel_1.PROC_NO
> >>> >> >>>> >> >  は想定の値が抽出されている。)
> >>> >> >>>> >> >
> >>> >> >>>> >> > バージョン
> >>> >> >>>> >> > dbflute-0.8.9.43
> >>> >> >>>> >> > データベース
> >>> >> >>>> >> > SQL Server 2008
> >>> >> >>>> >> >
> >>> >> >>>> >> > 以上、よろしくお願いいたします。
> >>> >> >>>> >> >
> >>> >> >>>> >> >
> >>> >> >>>> >> > _______________________________________________
> >>> >> >>>> >> > seasar-dotnet mailing list
> >>> >> >>>> >> > seasar-dotnet @ ml.seasar.org
> >>> >> >>>> >> > https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> >>> >> >>>> >> _______________________________________________
> >>> >> >>>> >> seasar-dotnet mailing list
> >>> >> >>>> >> seasar-dotnet @ ml.seasar.org
> >>> >> >>>> >> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> >>> >> >>>> >
> >>> >> >>>> >
> >>> >> >>>> > _______________________________________________
> >>> >> >>>> > seasar-dotnet mailing list
> >>> >> >>>> > seasar-dotnet @ ml.seasar.org
> >>> >> >>>> > https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> >>> >> >>>> _______________________________________________
> >>> >> >>>> seasar-dotnet mailing list
> >>> >> >>>> seasar-dotnet @ ml.seasar.org
> >>> >> >>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> >>> >> >>>
> >>> >> >>>
> >>> >> >>> _______________________________________________
> >>> >> >>> seasar-dotnet mailing list
> >>> >> >>> seasar-dotnet @ ml.seasar.org
> >>> >> >>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> >>> >> _______________________________________________
> >>> >> seasar-dotnet mailing list
> >>> >> seasar-dotnet @ ml.seasar.org
> >>> >> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> >>> >
> >>> > _______________________________________________
> >>> > seasar-dotnet mailing list
> >>> > seasar-dotnet @ ml.seasar.org
> >>> > https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> >>> _______________________________________________
> >>> seasar-dotnet mailing list
> >>> seasar-dotnet @ ml.seasar.org
> >>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> >>
> >>
> >> _______________________________________________
> >> seasar-dotnet mailing list
> >> seasar-dotnet @ ml.seasar.org
> >> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> _______________________________________________
> seasar-dotnet mailing list
> seasar-dotnet @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet



seasar-dotnet メーリングリストの案内