[seasar-dotnet:1482] Re: [DBFlute] 外だしSQLのSelectEntityで結果がNULLのときに例外

kubo [E-MAIL ADDRESS DELETED]
2009年 9月 24日 (木) 18:19:50 JST


久保(jflute)です。

西山さん、ご報告ありがとうございます。
0.8.9.5は10月1日にリリース予定です。

2009/9/24 西山 はじめ <[E-MAIL ADDRESS DELETED]>:
> 西山です。
>
> 対応ありがとうございました。
>
> SQLの結果がNULLが戻って来たときに、Int型で受け取った場合に Nothingになることが確認できました。
>
> Listでカラムひとつの場合は確認しておりません。
>
> 以上よろしくお願いいたしいます。
>
> [2009/09/18 23:34] kubo さんは書きました。:
>>
>> 久保(jflute)です。
>>
>> DBFlute.NET-0.8.9.5-SNAPSHOTでお試し下さい。
>>
>> http://dbflute.net.sandbox.seasar.org/download/dbflute/dbflute-0.8.9.5-SNAPSHOT.zip
>>
>> 結局「Dao内部でPlainなListに積んで入り口でGenericなListに」
>> という感じでなんとか回避してみました。
>> DaoでGenericメソッドにAOPが効かないことが
>> 逆に功を奏して意外に修正が少なくて済みました。
>>
>>
>> 2009/9/18 西山 はじめ <[E-MAIL ADDRESS DELETED]>:
>>>
>>> 西山です。
>>>
>>> 了解しました。
>>> 重要度は高くありませんのでNVLで回避しておきます。
>>>
>>>> new List<DateTime?>().Add(null);
>>>> は、可能なのに
>>>> ((System.Collections.IList)new List<DateTime?>()).Add(null);
>>>> が、不可(例外)という挙動のことです。
>>>
>>> これは確かに納得いかないですね。
>>> .NET・・・不思議な動きしますね。
>>>
>>>
>>> [2009/09/18 19:24] kubo さんは書きました。:
>>>>
>>>> 久保(jflute)です。
>>>>
>>>> ちなみCollectionの特徴とは:
>>>>
>>>> new List<DateTime?>().Add(null);
>>>> は、可能なのに
>>>> ((System.Collections.IList)new List<DateTime?>()).Add(null);
>>>> が、不可(例外)という挙動のことです。
>>>> (納得いかない...)
>>>>
>>>> 他の方で、この回避策をご存知の方いらっしゃいましたら、
>>>> ご教授頂けると助かります。
>>>> (共通部分の処理なので、Genericの方は特定出来ず
>>>>  Add処理はどうしても汎用的なSystem.Collections.IListで
>>>>  取り扱っています)
>>>>
>>>>
>>>> 2009/9/18 kubo <[E-MAIL ADDRESS DELETED]>:
>>>>>
>>>>> 久保(jflute)です。
>>>>>
>>>>> 西山さん、こんばんは
>>>>>
>>>>> フィードバックありがとうございます。
>>>>> こちらでも現象を確認致しました。
>>>>> しかしながら、.NETのCollectionの特徴に引っ掛かっていて、
>>>>> 一筋縄では行かなそうですね...現状スマートな解決策が
>>>>> ちょっと思いついてません。
>>>>>
>>>>> ひとまずJIRAには登録しました。
>>>>> https://www.seasar.org/issues/browse/DBFLUTENET-14
>>>>> すぐに解決できないかもしれないので、
>>>>> とりあえずはnvlでの回避お願いします。
>>>>>
>>>>> 2009/9/18 西山 はじめ <[E-MAIL ADDRESS DELETED]>:
>>>>>>
>>>>>> お世話になっております。
>>>>>> 西山です。
>>>>>>
>>>>>> 外だしSQLのSelectEntityを利用するときに、
>>>>>> ・Select句を1カラム指定
>>>>>> ・戻り値のEntityを「値型(Integerなど)」
>>>>>> にすると、SQLの結果がNULLだったときに例外が発生してしまいます。
>>>>>>
>>>>>> S2DaoMetaDataExtension.csの、
>>>>>> InternalObjectGenericListResultSetHandler.Handleメソッド内で
>>>>>> nullをresultListに追加しているからのようです。
>>>>>>
>>>>>> int?のNullable型もダメなようです。
>>>>>>
>>>>>> Oracleなので、NVLでNULLが返らないようにしましたが、DBFlute側
>>>>>> でNULLを返すようにしてくださると助かります。
>>>>>>
>>>>>> :環境
>>>>>> .NET 2.0
>>>>>> VB 2008
>>>>>> DBFlute 0.8.9.2
>>>>>> Oracle 9.2.0.6
>>>>>>
>>>>>> :ログ
>>>>>> [Exception]
>>>>>> System.ArgumentException
>>>>>> 値 "" は型 "System.Nullable`1[System.Int32]" ではなく、この
>>>>>> 汎用コレクションでは使用できません。
>>>>>> パラメータ名: value
>>>>>>
>>>>>>
>>>>>> 以上よろしくお願いいたします。
>>>>>> --
>>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>>> 株式会社フジミック
>>>>>> システム開発センター ソフトウェア開発部
>>>>>> 西山 創
>>>>>> [E-mail]:[E-MAIL ADDRESS DELETED]
>>>>>>
>>>>>> 〒140-0002 東京都品川区東品川3-32-42 フジテレビ別館7階
>>>>>> [TEL]:03-5495-1060
>>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>>>
>>>>>> _______________________________________________
>>>>>> seasar-dotnet mailing list
>>>>>> [E-MAIL ADDRESS DELETED]
>>>>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>>>>
>>>>
>>>>
>>>
>>> --
>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>> 株式会社フジミック
>>>         システム開発センター ソフトウェア開発部
>>>  西山 創
>>> [E-mail]:[E-MAIL ADDRESS DELETED]
>>>
>>> 〒140-0002 東京都品川区東品川3-32-42 フジテレビ別館7階
>>> [TEL]:03-5495-1060
>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>
>>> _______________________________________________
>>> seasar-dotnet mailing list
>>> [E-MAIL ADDRESS DELETED]
>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>
>>
>>
>>
>
>
> --
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 株式会社フジミック
>         システム開発センター ソフトウェア開発部
>  西山 創
> [E-mail]:[E-MAIL ADDRESS DELETED]
>
> 〒140-0002 東京都品川区東品川3-32-42 フジテレビ別館7階
> [TEL]:03-5495-1060
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>


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