[Seasar-user:15127] Re: 【DBFlute】共通カラム機能を利用したコード生成について質問

kubo [E-MAIL ADDRESS DELETED]
2008年 7月 23日 (水) 18:26:21 JST


久保(jflute)です。

> このあたりのAccessContextの定義は自分で記述しなければならないのでしょうか?

AccessContextはある意味「値を運ぶための箱」
なわけですが、汎用的な入れ物しか用意していません。

    protected String accessUser;
    protected String accessProcess;
    protected java.util.Date accessDate;
    protected java.sql.Timestamp accessTimestamp;

名前が付いていますが、制約はありません。
ただの箱だと思って下さい。

上記の合致しない独自のカラムに関しては、
AccessContextと同等のクラスをプロジェクトで
独自に作成して下さい。(コピーして書き換える感じでOKです)
要は、スレッドローカルで値を運べれば良いので、
必ずAccessContextを使わなければならないというわけでは
ありません。AccessContextはあくまで汎用実装となります。

その場合dfpropには

; ABCFlag= DokujiProject.DokujiContext.GetABCFlagOnThread()

という感じで、フルネームで書きます。


#
# ただ、汎用的に使える領域を用意しても良いかもしれませんね。
# ; ABCFlag= $$AccessContext $$.GetValueOnThread("ABCFlag")
# みたいな感じで。。。
#


2008/7/23 柴切 卓 <[E-MAIL ADDRESS DELETED]>:
>
> 柴切です。
>
> 久保さん、返信ありがとうございます。
>
> 参考ページを踏まえて、
>
> map:{
> ; commonColumnMap = map:{
> ; ABCFlag=CHAR
> }
> ; beforeInsertMap = map:{
> ; ABCFlag= "A"
> }
> ; beforeUpdateMap = map:{
> ; ABCFlag= $$AccessContext$$.GetABCFlagOnThread()
> }
> }
>
> こんな感じでcommonColumnMap.dfpropファイルを設定してコード生成するのかと
> 思いました。
>
> 実際生成してみると、AccessContextクラスには
>
> 「String? AccessABCFlagプロパティ」 や 「String? GetABCFlagOnThread()
> メソッド」
>
> は定義されていませんでした。
>
> このあたりのAccessContextの定義は自分で記述しなければならないのでしょうか?
>
> 使い方が間違っているかもしれませんが、それを含めてアドバイスいただければ
> と思います。
>
> よろしくお願いします。
>
>
>
> kubo さんは書きました:
>> 久保(jflute)です。
>>
>> <A>であれば、
>>
>> http://dbflute.sandbox.seasar.org/contents/setup/commoncolumn.html
>>>> 「2. AccessContext(ThreadLocal)に値を格納」
>> を参考に
>> リクエスト開始時にAccessContextに判断した
>> 値を格納すればOKです。
>>
>> 2008/7/23 柴切 卓 <[E-MAIL ADDRESS DELETED]>:
>>
>>> 柴切です。
>>>
>>> 久保さん、返信ありがとうございます。
>>>
>>> 私が質問した(1)(2)ともに、下記の<A>のような動作を行いたいと思って
>>> います。
>>>
>>> AccessContextを利用する場合、(1)や(2)を格納する変数が必要ですが、
>>> それを自動で生成することは可能でしょうか?
>>>
>>>
>>> kubo さんは書きました:
>>>
>>>> 久保(jfute)です。
>>>>
>>>> 柴切さん、こんばんわ
>>>>
>>>>
>>>>
>>>>> Update時は 'B' or 'C'
>>>>>
>>>>>
>>>> この「B」なのか「C」なのかは、
>>>> 何で決定するのでしょうか?
>>>>
>>>> <A>
>>>> もし、WEB上のリクエスト時に決定するのであれば、
>>>> AccessContextに値を格納するタイミングで「B」or「C」を
>>>> 決定して格納すれば良いと思います。
>>>>
>>>> <B>
>>>> もし、指定されたEntityの別の値で決定するのであれば、
>>>> ちょっと強引ですが、commonColumnMap.dfpropにて
>>>> 以下のように記述できます。
>>>>
>>>> XXX_FLG = $entity.isLogicalDeleteFlgFalse() ? entity.setXxx('b') :
>>>> entity.setXxx('c')$$Semicolon$$
>>>>
>>>> ※ isLogicalDeleteFlgFalse()は区分値メソッド(or Extendedに作成した独自メソッド)
>>>>
>>>> 2008/7/22 柴切 卓 <[E-MAIL ADDRESS DELETED]>:
>>>>
>>>>
>>>>> 柴切と申します。
>>>>>
>>>>> お世話になります。
>>>>>
>>>>> DBflute 共通カラム機能を利用したコード生成について質問があり、メール致
>>>>> しました。
>>>>>
>>>>> ドキュメントを読んでみましたが、以下の2つのUpdate動作を自動生成で実現す
>>>>> る方法が導きだせませんでした。
>>>>>
>>>>> (1)Char型の共通カラムに
>>>>>
>>>>> Insert時は 'A'
>>>>> Update時は 'B' or 'C'
>>>>>
>>>>> (2)int型の共通カラムに
>>>>>
>>>>> Insert時は 0
>>>>> Update時は 1 or 2
>>>>>
>>>>>
>>>>> リアルタイムな値などと同じで、自由に値を格納したいのだから
>>>>> 「AccessContextを利用するんだな!」 とは思うのですがそこから止まってし
>>>>> まいました。
>>>>>
>>>>> 理解不足の面もあるかと思いますが、是非実現方法のアドバイス等いただけたら
>>>>> と思っております。
>>>>>
>>>>> よろしくお願いいたします。
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Seasar-user mailing list
>>>>> [E-MAIL ADDRESS DELETED]
>>>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>>>
>>>>>
>>>>>
>>>> _______________________________________________
>>>> Seasar-user mailing list
>>>> [E-MAIL ADDRESS DELETED]
>>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>>
>>>>
>>>>
>>>>
>>> _______________________________________________
>>> Seasar-user mailing list
>>> [E-MAIL ADDRESS DELETED]
>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>
>>>
>> _______________________________________________
>> Seasar-user mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>
>>
>>
>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


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