【DBFlute.NET】additionalForeignKeyMap.dfpropのIF $$parameterBase$$.について

19 views
Skip to first unread message

志水正幸

unread,
May 10, 2019, 2:55:07 AM5/10/19
to DBFluteユーザの集い
志水です。
お世話になっております。

「additionalForeignKeyMap.dfprop」で
下記のようにIF $$parameterBase$$.を使った定義をしましたが
実際に動作させてみるとIF文のパラメータ値に当たる変数には値をセットしている
のですが実際のSQLにはIF文でうまく処理できていないのか出力がされてません。
一応、Generateまでされて、コードも生成されているようなのですが
もしかして、.NET版は未対応なのでしょうか?

◆コード
                TUriageDetailCB _TUriageDetailCB = new TUriageDetailCB();
                _TUriageDetailCB.Query().QueryTJuchu(DateFrom, DateTo, JcuCode, JcuTanCode, JcuKouteiTanCode, JcuGyoumuTanCode, GenericUtil.intTryparse(CDef.EN_JCOND_KBN.取消.Code)).InnerJoin();
                _TUriageDetailCB.Query().QueryTUriageHead(GenericUtil.intTryparse(CDef.EN_SHUKKAURI_KBN.仮出荷.Code), GenericUtil.intTryparse(CDef.TORIKESHI_FLG.NORMAL.Code)).InnerJoin();


◆additionalForeignKeyMap.dfprop
    # 売上明細と受注データ
    ; [FK_T_URIAGE_DETAIL_T_JUCHU] = map:{
        ; localTableName = T_URIAGE_DETAIL
        ; foreignTableName = T_JUCHU
        ; localColumnName = URI_JCU_CODE
        ; foreignColumnName =  JCU_CODE
        ; fixedCondition = 
    /*IF $$parameterBase$$.TargetJcuDateFrom != null*/
    and $$foreignAlias$$.JCU_DATE >= /*TargetJcuDateFrom(DateTime?)*/null
    /*END*/
    /*IF $$parameterBase$$.TargetJcuDateTo != null*/
    and $$foreignAlias$$.JCU_DATE <= /*TargetJcuDateTo(DateTime?)*/null
    /*END*/
        /*IF $$parameterBase$$.TargetJcuCode != null*/
        and $$foreignAlias$$.JCU_CODE <= /*TargetJcuCode(String)*/null
        /*END*/
    /*IF $$parameterBase$$.TargetJcuTanCode != null*/
    and $$foreignAlias$$.JCU_TAN_CODE = /*TargetJcuTanCode(int?)*/null
    /*END*/
    /*IF $$parameterBase$$.TargetJcuKouteiTanCode != null*/
    and $$foreignAlias$$.JCU_KOUTEI_TAN_CODE = /*TargetJcuKouteiTanCode(int?)*/null
    /*END*/
    /*IF $$parameterBase$$.TargetJcuGyoumuTanCode != null*/
    and $$foreignAlias$$.JCU_GYOUMU_TAN_CODE = /*TargetJcuGyoumuTanCode(int?)*/null
    /*END*/
    /*IF $$parameterBase$$.TargetJcuFlag != null*/
    and $$foreignAlias$$.JCU_FLAG <= /*TargetJcuFlag(int?)*/null
    /*END*/

    }      
    
    
    # 売上明細と売上ヘッダ
    ; [FK_T_URIAGE_DETAIL_T_URIAGE_HEAD] = map:{
        ; localTableName = T_URIAGE_DETAIL
        ; foreignTableName = T_URIAGE_HEAD
        ; localColumnName = URI_CODE
        ; foreignColumnName =  URI_CODE
        ; fixedCondition = 
        /*IF $$parameterBase$$.TargeturiKubun != null*/and $$foreignAlias$$.URI_KUBUN <= /*TargeturiKubun(int?)*/null/*END*/
        /*IF $$parameterBase$$.TargetTrikeshiFlg != null*/and $$foreignAlias$$.URI_TORIKESHI_FLG <= /*TargetTrikeshiFlg(int?)*/null/*END*/

    }     


◆実行後SQL

{TUriageDetailCB:
select  dfloc.URI_CODE as c0, dfloc.URI_SEQ as c1, dfloc.URI_SHH_CODE as c2, dfloc.URI_JCU_CODE as c3, 
~割愛~
  from T_URIAGE_DETAIL dfloc
    left outer join T_JUCHU dfrel_0
      on dfloc.URI_JCU_CODE = dfrel_0.JCU_CODE
     and 
    
    left outer join T_URIAGE_HEAD dfrel_1
      on dfloc.URI_CODE = dfrel_1.URI_CODE
     and 
        }

kubo

unread,
May 10, 2019, 6:11:24 AM5/10/19
to DBFluteユーザの集い
jfluteです

志水さん、こんばんは

> 一応、Generateまでされて、コードも生成されているようなのですが
> もしかして、.NET版は未対応なのでしょうか?

そうですね。fixedConditionのドキュメントを見ると、
そもそもfixedCondition内のIFコメント自体が...
「IFコメント (@since 0.9.9.1C)」とあるので、
.NET版のバージョンでは達していません。

// additionalForeignKeyMap | DBFlute
http://dbflute.seasar.org/ja/manual/reference/dfprop/additionalforeignkey/#fixedcondition

申し訳ないですが未対応ということになります。

志水正幸

unread,
May 10, 2019, 6:52:24 AM5/10/19
to DBFluteユーザの集い
jfluteさん
こんばんわー。

うわー、やっぱりそうですか~。
Generateでコード生成できてたから
勝手にイケるもんだと思ってましたよ。
あきらめて外だしにします。

前からマニュアルみててなんだろうなぁと思ってたけど
「IFコメント (@since 0.9.9.1C)」って書いてあるところ
Java版しか対応してないってことなんですね。


ありがとうございましたー。




2019年5月10日金曜日 19時11分24秒 UTC+9 jflute:

kubo

unread,
May 10, 2019, 7:24:43 AM5/10/19
to DBFluteユーザの集い
jfluteです

> 「IFコメント (@since 0.9.9.1C)」って書いてあるところ
> Java版しか対応してないってことなんですね。

.NET版の最新が「0.8.9.59」なので、
そのバージョンに届いてないというところですね。
http://dbflute.net.sandbox.seasar.org/ja/environment/newest.html

※まあ、@since が付いてるものは、
ほとんど「0.8.9.59」以降だとは思いますので、
同じことかもしれませんが

志水正幸

unread,
May 10, 2019, 8:38:56 AM5/10/19
to DBFluteユーザの集い
こんばんわー

おおぅ、なるほどー。
.NET版が追いかけてるってことか。
理解しました。。
早く追いついてほしいなぁ・・・




2019年5月10日金曜日 20時24分43秒 UTC+9 jflute:
Reply all
Reply to author
Forward
0 new messages