[seasar-dotnet:1741] Re: 区分値のプロパティを持つ外だしSQLのParameterBeanでコンパイルエラーが起きます

kubo [E-MAIL ADDRESS DELETED]
2010年 6月 18日 (金) 23:13:19 JST


久保(jflute)です。

ご報告ありがとうございます。
別件も返事しておきました。

2010/6/18 taknb2nch <[E-MAIL ADDRESS DELETED]>:
> 久保 さん
>
>
> こんにちは、はぎの です。
>
>
> 早速の対応ありがとうございました。
> 区分値のご説明もありがとうございます。
>
>
> DBFlute.NET-0.9.8.18-01-SNAPSHOTにて動作を確認したところ実行したところ、
> 問題なくコンパイルできました。
>
> ありがとうございます。
>
>
>
> ただ、検証をするうえで別の問題を見つけてしまったので、
> 別件として流します。
>
>
> 2010年6月18日17:44 kubo <[E-MAIL ADDRESS DELETED]>:
>> 久保(jflute)です。
>>
>> はぎの さん、こんにちは
>>
>> フィードバックありがとうございます。
>> DBFlute.NET-0.9.8.18-01-SNAPSHOTにて修正しました。
>> ぜひお試し下さい。
>> http://dbflute.net.sandbox.seasar.org/ja/environment/newest.html
>>
>> また、codeTypeに関してドキュメントが説明不足だったので、
>> 説明を追記しました。
>> http://dbflute.sandbox.seasar.org/ja/manual/reference/dfprop/classificationdefinition/index.html#codetype
>>
>> 但し、DBFlute.NETにおいては、ドキュメントの
>> "ParameterBeanのプロパティとして区分値の型(CDef)を直接利用"
>> をサポートしていませんので、実質的に codeType は、
>> 今のところ動作に影響を与えるものではありません。
>>
>>> そもそもSetXXXXXメソッドがあるのでそれを使えば済むことなのですが。
>>> (内部では変換してくれているようですね)
>> さらには、Entityには、[カラム]As[区分値]というプロパティが
>> ありますので、Code値を使わずにCDefをそのまま設定できます。
>> よって、Code値の型を実装上で意識することは基本的にありません。
>> (もちろん、SetXXXXXメソッドの利用が一番推奨される方法です)
>>
>> 2010/6/17 taknb2nch <[E-MAIL ADDRESS DELETED]>:
>>> お世話になります。
>>>
>>> はぎの です。
>>>
>>>
>>> DBFlute.NETにて、
>>> classificationDefinitionMap.dfpropのcodeType=Numberの区分値を
>>> 外だしSQLのParameterBeanにて使用した際、
>>> sql2entityタスクにて生成されたParameterBeanクラスがコンパイルエラーになります。
>>>
>>> [classificationDefinitionMap.dfprop]
>>> ; Flag = list:{
>>>    ; map:{topComment=フラグを示す; codeType=Number}
>>>    ; map:{code=1; name=True ; alias=はい  ; comment=有効を示す}
>>>    ; map:{code=0; name=False; alias=いいえ; comment=無効を示す}
>>> }
>>>
>>> [SQLファイル定義部分]
>>> -- !df:pmb!
>>> -- !!int? flag:cls(Flag)!!
>>>
>>>
>>> [生成されたParameterBeanから抜粋]
>>> protected int? _flag;
>>>
>>> public int? Flag {
>>>    get { return _flag; }
>>>    set { _deletedFlag = value; }
>>> }
>>>
>>> public void SetFlag_True() {
>>>    this.Flag = CDef.Flag.True.Code;
>>> }
>>>
>>> public void SetDeletedFlag_False() {
>>>    this.Flag = CDef.Flag.False.Code;
>>> }
>>>
>>>
>>> BsEntity以下のエンティティの、同区分値のプロパティの処理と同じく、
>>> int.Parse()等の型変換が必要ではないかと思うのですがいかがでしょうか。
>>>
>>>
>>> ちなみに、
>>> classificationDefinitionMap.dfpropのcodeTypeですが、
>>> String、NumberまたはBooleanで違いがあるのでしょうか。
>>>
>>> 生成されるソースではいずれの場合もCodeはStringになるのですが、
>>> CDef.Flag.False.Codeを直接使いたい場合、常にキャストが必要になります。
>>>
>>> そもそもSetXXXXXメソッドがあるのでそれを使えば済むことなのですが。
>>> (内部では変換してくれているようですね)
>>>
>>>
>>> 実行環境
>>> DBFlute:0.8.9.16
>>>
>>>
>>> よろしくお願いいたします。
>>> _______________________________________________
>>> seasar-dotnet mailing list
>>> [E-MAIL ADDRESS DELETED]
>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>
>> _______________________________________________
>> seasar-dotnet mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>


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