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

kubo [E-MAIL ADDRESS DELETED]
2009年 9月 18日 (金) 23:34:36 JST


久保(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
>


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